阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Filebeat、Logstash、Rsyslog 各种姿势采集Nginx日志

189次阅读
没有评论

共计 2881 个字符,预计需要花费 8 分钟才能阅读完成。

由于 nginx 功能强大,性能突出,越来越多的 web 应用采用 nginx 作为 http 和反向代理的 web 服务器。而 nginx 的访问日志不管是做用户行为分析还是安全分析都是非常重要的数据源之一。如何有效便捷的采集 nginx 的日志进行有效的分析成为大家关注的问题。Filebeat、Logstash、Rsyslog 各种姿势采集 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 采集日志到 ESFilebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志

在 filebeat 的安装目录找到 filebeat.yml 配置获取日志文件的路径及输出到 ES 的配置。
具体:Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
如果需要在 kibana 中友好显示的化,可进行 kibana 配置
Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
输出到 es 中,在 hosts 中配置好你的 ES 服务地址。如果单机只有一个节点,就可以只配一个 ip 和端口。
Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
启动 filebeat 进行日志数据采集 Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
通过 elasticsearch-head 插件查看 es 索引中的日志信息 Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
可以看到 nginx 中的 access.log 和 error.log 的日志都已经上来了。
在 kibana 中通过 filebeat-* 过滤看 filebeat 的索引,可以看到通过 filebeat 采过来的数据。Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
这种直接通过 filebeat 直接对接 ES 采日志的方式简单直接,但是无法对采集的日志进行预处理和其他一些操作,也不够灵活。
可以在 filebeat 和 ES 之间加一层 Logstash,可以将 filebeat 于 ES 解耦,通过 Logstash 可以做一些预处理,也可以通过 Logstash 采集到除 ES 以外的其他数据存储上。

二、通过 filebeat 采集日志到 logstash 再送到 ESFilebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志

首先得安装 logstash,安装完后在 logstash 的安装目录下新建 vi filebeat-pipeline.conf,filebeat-pipeline.conf 的具体配置如下:Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志

input 配置表示通过 5044 端口接收 beats 的数据。
output 配置表示输出到 elasticsearch,并且同时输出到标准输出也就是控制台。然后通过命令 Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
应用 filebeat-pipeline.conf 启动 logstash。Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
启动以后可以看到 logstash 的启动日志 5044 端口的服务已经起了,可以接受通过 filebeat 通过 5044 端口传过来的数据了。
接下来配置 filebeat:
在 filebeat 的安装目录找到 filebeat.yml 配置获取日志文件的路径及输出到 logstash 的配置。不直接输出到 ES 了。
具体配置如下:
将 output.elasticsearch 的配置屏蔽,配置 output.logstash,配置正确的 logstash 的服务主机和端口。Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
启动 filebeat 进行日志数据采集 Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
我们访问 nginx 服务提供的 web 服务 http://172.28.65.32/,在 logstash 的控制台 可以看到相应的访问 access.log 日志 Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
同时在 ES 中也可以看到有相应的日志数据 Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志

三、直接通过 rsyslog 采集日志到 logstash 在送到 ES

在很多情况下你需要采集的 web 服务器并不是自己能够控制的,不是说你想装 filebeat 就可以让你装的,这时候就可以要求目标数据源通过 syslog 的方式将日志发出来。我们可以再通过 logstash 送到 ES 或其他的日志存储处理平台。Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
通过 syslog 往日志服务器上发 nginx 的日志有两种方式,一种就是利用 nginx 的配置往外发日志,一种就是通过配置 linux 的 rsyslog 的配置往外发日志。
1、通过 nginx 配置发送 syslog 到 logstash
具体配置如下:
在 nginx 的配置文件 nginx.conf 中,在 server 下配置 access_log 和 error_log 的输出方式 Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
配置完成后执行 ./nginx -s reload 使配置生效。这样就通过 linux 的 rsyslog 服务将 nginx 的日志往外发了。
接着来配置 logstash 的 syslog 的服务接收配置。在 logstash 的安装目录下新建 vi syslog-pipeline.conf,syslog-pipeline.conf 的具体配置如下:Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
input 配置表示通过 514 端口接收 syslog 的数据。
output 配置表示输出到 elasticsearch,并且同时输出到标准输出也就是控制台。通过执行 bin/logstash -f syslog-pipeline.conf –config.reload.automatic 启动 logstashFilebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
可以看到 logstash 启动以后开启了 514 端口的 tcp 和 upd 协议的侦听。
我们访问 nginx 服务提供的 web 服务 http://172.28.65.32/,在 logstash 的控制台 可以看到相应的 nginx 访问 access 和 error 的日志 Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
同样通过 Elasticsearch-head 在 ES 中也可以看到有相应的日志数据 Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
2、通过配置 rsyslog 发送 syslog 日志到 logstash
有些老版本的 nginx 不支持配置 syslog 输出日志,或者说我想输出其他不是 nginx 的日志该怎么办呢?可以通过直接配置 rsyslog 的方式来往外发送日志。
在 /etc/rsyslog.conf 中配置:Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
意思是可以引用外部的配置文件,引用外部的配置文件一方面可以不影响主配置文件,另一方面也比较好管理。
在 /etc/rsyslog.d 目录下新建 nginx-log.conf,配置如下:Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
配置好了以后,重启 rsyslog 服务。Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
我们访问 nginx 服务提供的 web 服务 http://172.28.65.32/,在 logstash 的控制台 可以看到同样的效果。Filebeat、Logstash、Rsyslog 各种姿势采集 Nginx 日志
本文介绍了如何通过 filebeat、logstash、rsyslog 采集 nginx 的访问日志和错误日志的几种方式,具体需要根据实际情况灵活的运用。

原文连接:https://www.cnblogs.com/xiejava/p/12452434.html
文章转载:DevOps 技术栈

(版权归原作者所有,侵删)

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-12-03发表,共计2881字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中