采集Nginx日志的几种方式( 二 )

./filebeat -e -c filebeat.yml -d "publish"我们访问nginx服务提供的web服务http://172.28.65.32/
在logstash的控制台 可以看到相应的访问access.log 日志

采集Nginx日志的几种方式

文章插图
 
同时在ES 中也可以看到有相应的日志数据
采集Nginx日志的几种方式

文章插图
 
三、直接通过rsyslog采集日志到logstash在送到ES在很多情况下你需要采集的web服务器并不是自己能够控制的 , 不是说你想装filebeat就可以让你装的 , 这时候就可以要求目标数据源通过 syslog 的方式将日志发出来 。我们可以再通过 logstash送到ES或其他的日志存储处理平台 。
采集Nginx日志的几种方式

文章插图
 
通过syslog往日志服务器上发nginx的日志有两种方式 , 一种就是利用nginx的配置往外发日志 , 一种就是通过配置linux的rsyslog的配置往外发日志 。
1、通过nginx配置发送syslog到logstash
参考见nginx官方文档:http://nginx.org/en/docs/syslog.html
具体配置如下:
在nginx的配置文件nginx.conf中
在server下配置access_log和error_log的输出方式
access_log syslog:server=172.28.65.32:514,facility=local7,tag=nginx_access_log,severity=info;error_log syslog:server=172.28.65.32:514,facility=local7,tag=nginx_error_log,severity=info;
采集Nginx日志的几种方式

文章插图
 
配置完成后执行 ./nginx -s reload 使配置生效 。这样就通过linux的rsyslog服务将nginx的日志往外发了 。
接着来配置logstash的syslog的服务接收配置。在logstash的安装目录下新建vi syslog-pipeline.conf
syslog-pipeline.conf的具体配置如下:
input {syslog{type => "system-syslog"port => 514}}output {elasticsearch {hosts => ["172.28.65.24:9200"]index => "system-syslog-%{+YYYY.MM}"}stdout { codec => rubydebug}}input配置表示通过514端口接收syslog的数据
output配置表示输出到elasticsearch , 并且同时输出到标准输出也就是控制台 。
通过执行 bin/logstash -f syslog-pipeline.conf --config.reload.automatic 启动logstash
采集Nginx日志的几种方式

文章插图
 
可以看到logstash启动以后开启了514端口的tcp和upd协议的侦听 。
我们访问nginx服务提供的web服务http://172.28.65.32/
在logstash的控制台 可以看到相应的nginx访问access和error的日志
采集Nginx日志的几种方式

文章插图
 
同样通过Elasticsearch-head在ES 中也可以看到有相应的日志数据
采集Nginx日志的几种方式

文章插图
 
2、通过配置rsyslog发送syslog日志到logstash
有些老版本的nginx不支持配置syslog输出日志 , 或者说我想输出其他不是nginx的日志该怎么办呢?可以通过直接配置rsyslog的方式来往外发送日志 。
在/etc/rsyslog.conf 中配置
$IncludeConfig /etc/rsyslog.d/*.conf
采集Nginx日志的几种方式

文章插图
 
意思是可以引用外部的配置文件 , 引用外部的配置文件一方面可以不影响主配置文件 , 另一方面也比较好管理
在/etc/rsyslog.d目录下新建nginx-log.conf
配置如下:
$ModLoad imfile$InputFilePollInterval 1$WorkDirectory /var/spool/rsyslog$PrivDropToGroup adm##Nginx访问日志文件路径 , 根据实际情况修改:$InputFileName /usr/local/nginx/logs/access.log$InputFileTag nginx-access:$InputFileStateFile stat-nginx-access$InputFileSeverity info$InputFilePersistStateInterval 25000$InputRunFileMonitor##Nginx错误日志文件路径 , 根据实际情况修改:$InputFileName /usr/local/nginx/logs/error.log$InputFileTag nginx-error:$InputFileStateFile stat-nginx-error$InputFileSeverity error$InputFilePersistStateInterval 25000$InputRunFileMonitor*.* @172.28.65:514配置好了以后 , 重启rsyslog服务
systemctl restart rsyslog我们访问nginx服务提供的web服务http://172.28.65.32/
在logstash的控制台 可以看到同样的效果 。
采集Nginx日志的几种方式

文章插图
 
本文介绍了如何通过filebeat、logstash、rsyslog采集nginx的访问日志和错误日志的几种方式 , 具体需要根据实际情况灵活的运用 。


推荐阅读