由于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
文章插图
在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*
文章插图
如果需要在kibana中友好显示的化 , 可进行kibana配置
文章插图
输出到es中 , 在hosts中配置好你的ES服务地址 。如果单机只有一个节点 , 就可以只配一个ip和端口 。
文章插图
启动filebeat 进行日志数据采集
./filebeat -e -c filebeat.yml -d "publish"
通过elasticsearch-head插件查看es索引中的日志信息文章插图
【采集Nginx日志的几种方式】
可以看到nginx中的access.log和error.log的日志都已经上来了 。
在kibana中通过filebeat-*过滤看filebeat的索引 , 可以看到通过filebeat采过来的数据 。
文章插图
这种直接通过filebeat直接对接ES采日志的方式简单直接 , 但是无法对采集的日志进行预处理和其他一些操作 , 也不够灵活 。
可以在filebeat 和 ES之间加一层Logstash , 可以将filebeat于ES解耦 , 通过Logstash可以做一些预处理 , 也可以通过Logstash采集到除ES以外的其他数据存储上 。
二、通过filebeat采集日志到logstash再送到ES
文章插图
首先得安装 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 。文章插图
启动以后可以看到logstash的启动日志5044端口的服务已经起了 , 可以接受通过filebeat通过5044端口传过来的数据了 。
接下来配置filebeat
在filebeat的安装目录找到filebeat.yml 配置获取日志文件的路径及输出到logstash的配置 。不直接输出到ES了 。
具体配置如下:
将output.elasticsearch的配置屏蔽
配置output.logstash , 配置正确的logstash的服务主机和端口
文章插图
启动filebeat 进行日志数据采集
推荐阅读
- Nginx可以做什么?看完这篇你就懂了
- 谈谈Nginx和LVS各自的优缺点以及使用
- Nginx 整合 FastDFS 实现文件服务器
- 配置 Nginx 的目录浏览功能
- spring-boot-route 使用aop记录操作日志
- 提升网站安全性-隐藏nginx信息
- 让Nginx快速支持TLS1.3协议
- logback 日志输出格式
- 如何分析网站日志?谷歌蜘蛛分析工具
- 安卓使用阿里云的日志服务