logstash通过rsyslog对nginx的日志收集和分析

简介:

logstash通过rsyslog对nginx的日志收集和分析

http://bbotte.blog.51cto.com/6205307/1613571 logstash&elasticsearch&kibana的安装和配置

http://bbotte.blog.51cto.com/6205307/1614453  这一篇文章里面是以nginx打补丁的方式实现rsyslog把nginx的日志同步到logstash做分析,不过线上环境种种不一样,下面是把nginx的日志直接通过rsyslog同步到logstash服务器上,不用对nginx做更改,相对来说更简单明了。

nginx服务器端

nginx的配置文件不用改动,例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@db2 ~] # grep -v ^.*# /usr/local/nginx/conf/nginx.conf|sed '/^$/d'
worker_processes  1;
events {
     worker_connections  1024;
}
http {
     include       mime.types;
     default_type  application /octet-stream ;
     log_format  main   '$remote_addr - $remote_user [$time_local] "$request" '
                       '$status $body_bytes_sent "$http_referer" '
                       '"$http_user_agent" "$http_x_forwarded_for"' ;
     sendfile        on;
     keepalive_timeout  65;
     server {
         listen       80;
         server_name  localhost;
index index.html;                                     #默认配置,修改了下面几行
root  /var/www ;
access_log  /var/log/nginx/access .log main;
error_log  /var/log/nginx/error .log;
         error_page   500 502 503 504   /50x .html;
         location =  /50x .html {
             root   html;
         }
     }
}

rsyslog的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@db2 ~] # grep -v ^# /etc/rsyslog.conf|sed '/^$/d'
$ModLoad imuxsock  # provides support for local system logging (e.g. via logger command)
$ModLoad imklog    # provides kernel logging support (previously done by rklogd)
$ModLoad imfile    # imfile模块必须启用 Load the imfile input module 
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig  /etc/rsyslog .d/*.conf
*.info;mail.none;authpriv.none; cron .none                 /var/log/messages
authpriv.*                                               /var/log/secure
mail.*                                                  - /var/log/maillog
cron .*                                                   /var/log/cron
*.emerg                                                 *
uucp,news.crit                                           /var/log/spooler
local7.*                                                 /var/log/boot .log
#下面是nginx的设置
$InputFileName  /var/log/nginx/error .log
$InputFileTag kibana-nginx-errorlog:
$InputFileStateFile state-kibana-nginx-errorlog
$InputRunFileMonitor
$InputFileName  /var/log/nginx/access .log
$InputFileTag kibana-nginx-accesslog:
$InputFileStateFile state-kibana-nginx-accesslog
$InputRunFileMonitor
$InputFilePollInterval 10                  #等待10秒钟发送一次
if  $programname ==  'kibana-nginx-errorlog'  then  @192.168.10.1:514
if  $programname ==  'kibana-nginx-errorlog'  then  ~
if  $programname ==  'kibana-nginx-accesslog'  then  @192.168.10.1:514
if  $programname ==  'kibana-nginx-accesslog'  then  ~
*.* @192.168.10.1:514

配置说明:

$InputFileTag定义的NAME必须唯一,同一台主机上不同的应用应当使用不同的NAME,否则会导致新定义的TAG不生效;

$InputFileStateFile定义的StateFile必须唯一,它被rsyslog用于记录文件上传进度,否则会导致混乱;


@192.168.10.1:514用于指定接收日志的服务器域名或者主机名;

有需要的话,$InputFileSeverity info 也添加上


再把rsyslog服务重启

1
2
3
[root@db2 ~] # service rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]

现在nginx的日志,已经同步到logstash服务器的/var/log/messages,如下图

wKiom1TuxnSzHoFiAAr9mfojxVU826.jpg


logstash.conf 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
input {
  file  {
     type  =>  "syslog"
#    path => [ "/var/log/*.log", "/var/log/messages", "/var/log/syslog" ]
     path => [  "/var/log/messages"  ]
     sincedb_path =>  "/var/sincedb"
   }
   redis {
     host =>  "192.168.10.1"
     type  =>  "redis-input"
     data_type =>  "list"
     key =>  "logstash"
   }
   syslog {
     type  =>  "syslog"
     port =>  "5544"
   }
}
 
filter {
   grok {
     type  =>  "syslog"
     match => [  "message" "%{SYSLOGBASE2}"  ]
     add_tag => [  "syslog" "grokked"  ]
   }
}
 
output {
  elasticsearch { host =>  "192.168.10.1"  }
}


nginx的日志:

Feb 26 14:41:47 db2 kibana-nginx-accesslog: 192.168.10.50 - - [26/Feb/2015:14:41:42 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64; Trident/7.0; rv:11.0) like Gecko LBBROWSER" "-"

logstash界面:

wKioL1Tu2tKDORaIAAMFp3-KEZ4374.jpg










本文转自 bbotte 51CTO博客,原文链接:http://blog.51cto.com/bbotte/1615477,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
12天前
|
弹性计算 应用服务中间件 Shell
切割 Nginx 日志文件
【4月更文挑战第28天】
25 0
|
3天前
|
监控 应用服务中间件 nginx
使用 Docker Compose V2 快速搭建日志分析平台 ELK (Elasticsearch、Logstash 和 Kibana)
ELK的架构有多种,本篇分享使用的架构如图所示: Beats(Filebeat) -> -> Elasticsearch -> Kibana,目前生产环境一天几千万的日志,内存占用大概 10G
31 4
|
12天前
|
存储 监控 NoSQL
【MongoDB 专栏】MongoDB 的日志管理与分析
【5月更文挑战第11天】MongoDB日志管理与分析至关重要,包括系统日志和操作日志,用于监控、故障排查和性能优化。合理配置日志详细程度、存储位置和保留策略,使用日志分析工具提升效率,发现性能瓶颈和安全性问题。日志分析有助于优化查询、调整配置,确保数据安全,并可与其他监控系统集成。面对日志量增长的挑战,需采用新技术如分布式存储和数据压缩来保障存储和传输。随着技术发展,不断进化日志管理与分析能力,以支持MongoDB的稳定高效运行。
【MongoDB 专栏】MongoDB 的日志管理与分析
|
12天前
|
数据采集 监控 数据可视化
日志解析神器——Logstash中的Grok过滤器使用详解
日志解析神器——Logstash中的Grok过滤器使用详解
37 4
|
12天前
|
存储 监控 关系型数据库
PHP编写的电脑监控软件:用户登录日志记录与分析
使用PHP编写简单但功能强大的电脑监控软件,记录用户登录日志并进行分析。代码示例展示了如何获取并存储用户IP地址和登录时间到数据库,然后进行登录数据的分析,如计算登录频率和常见登录时间。此外,还介绍了如何通过定时任务自动将监控数据提交到网站,以便实时监控用户活动,提升系统安全性和稳定性。
80 0
|
12天前
|
弹性计算 应用服务中间件 Shell
切割Nginx 日志文件
【4月更文挑战第29天】
22 1
|
12天前
|
数据可视化
R语言两阶段最小⼆乘法2SLS回归、工具变量法分析股息收益、股权溢价和surfaces曲面图可视化
R语言两阶段最小⼆乘法2SLS回归、工具变量法分析股息收益、股权溢价和surfaces曲面图可视化
|
12天前
|
机器学习/深度学习 前端开发 数据挖掘
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断(下)
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
373 11
|
12天前
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断2
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
|
12天前
|
机器学习/深度学习 前端开发 数据挖掘
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断