采集Nginx日志的几种方式

由于Nginx功能强大 , 性能突出 , 越来越多的web应用采用nginx作为http和反向代理的web服务器 。而nginx的访问日志不管是做用户行为分析还是安全分析都是非常重要的数据源之一 。如何有效便捷的采集nginx的日志进行有效的分析成为大家关注的问题 。本文通过几个实例来介绍如何通过filebeat、logstash、rsyslog采集nginx的访问日志和错误日志 。
大家都知道ELK技术栈是采集、分析日志的利器 。所以这里介绍的是从nginx采集日志到ES 。当然至于日志采集以后存到看大家的需要 。通过logstash可以方便的配置日志输出存储的方式 。
一般来说nginx默认安装后 , 日志文件在 /usr/local/nginx/logs 目录下 。分别有 access.log和error.log 访问日志和错误日志 。
这次示例Elasitcsearch是三个节点组成的集群172.28.65.22、172.28.65.23、172.28.65.24 , 172.28.65.30 是kibana的地址 , 172.28.65.32是数据采集服务器 , 上面装有logstash、nginx、 filebeat 。一般来说采集服务器上有logstash , 而nginx、 filebeat应该是装在采集目标上 。
一、直接通过filebeat采集日志到ES

采集Nginx日志的几种方式

文章插图
 
在filebeat的安装目录找到filebeat.yml 配置获取日志文件的路径及输出到ES的配置 。
具体:
- type: log# Change to true to enable this input configuration.enabled: true# Paths that should be crawled and fetched. Glob based paths.paths:#- /var/log/*.log- /usr/local/nginx/logs/*.log#- c:programdataelasticsearchlogs*
采集Nginx日志的几种方式

文章插图
 
如果需要在kibana中友好显示的化 , 可进行kibana配置
采集Nginx日志的几种方式

文章插图
 
输出到es中 , 在hosts中配置好你的ES服务地址 。如果单机只有一个节点 , 就可以只配一个ip和端口 。
采集Nginx日志的几种方式

文章插图
 
启动filebeat 进行日志数据采集
./filebeat -e -c filebeat.yml -d "publish"通过elasticsearch-head插件查看es索引中的日志信息
采集Nginx日志的几种方式

文章插图
 
【采集Nginx日志的几种方式】
可以看到nginx中的access.log和error.log的日志都已经上来了 。
在kibana中通过filebeat-*过滤看filebeat的索引 , 可以看到通过filebeat采过来的数据 。
采集Nginx日志的几种方式

文章插图
 
这种直接通过filebeat直接对接ES采日志的方式简单直接 , 但是无法对采集的日志进行预处理和其他一些操作 , 也不够灵活 。
可以在filebeat 和 ES之间加一层Logstash , 可以将filebeat于ES解耦 , 通过Logstash可以做一些预处理 , 也可以通过Logstash采集到除ES以外的其他数据存储上 。
二、通过filebeat采集日志到logstash再送到ES
采集Nginx日志的几种方式

文章插图
 
首先得安装 logstash  , 安装完后在logstash的安装目录下新建vi filebeat-pipeline.conf
filebeat-pipeline.conf的具体配置如下:
input {beats {port => "5044"}}output {elasticsearch { hosts => ["172.28.65.24:9200"] }stdout { codec => rubydebug}}input配置表示通过5044端口接收beats的数据
output配置表示输出到elasticsearch , 并且同时输出到标准输出也就是控制台 。
然后通过命令
bin/logstash -f filebeat-pipeline.conf --config.reload.automatic应用filebeat-pipeline.conf启动logstash 。
采集Nginx日志的几种方式

文章插图
 
启动以后可以看到logstash的启动日志5044端口的服务已经起了 , 可以接受通过filebeat通过5044端口传过来的数据了 。
接下来配置filebeat
在filebeat的安装目录找到filebeat.yml 配置获取日志文件的路径及输出到logstash的配置 。不直接输出到ES了 。
具体配置如下:
将output.elasticsearch的配置屏蔽
配置output.logstash , 配置正确的logstash的服务主机和端口
采集Nginx日志的几种方式

文章插图
 
启动filebeat 进行日志数据采集


推荐阅读