前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >通过nginx配置发送syslog到logstash

通过nginx配置发送syslog到logstash

原创
作者头像
用户8671053
修改2021-09-26 17:38:44
修改2021-09-26 17:38:44
2K00
代码可运行
举报
文章被收录于专栏:码农的生活码农的生活
运行总次数:0
代码可运行

具体配置如下:在nginx的配置文件nginx.conf中 在server下配置access_log和error_log的输出方式

代码语言:javascript
代码运行次数:0
运行
复制
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 -s reload 使配置生效。这样就通过linux的rsyslog服务将nginx的日志往外发了。

接着来配置logstash的syslog的服务接收配置 。在logstash的安装目录下新建vi syslog-pipeline.confsyslog-pipeline.conf的具体配置如下:

代码语言:javascript
代码运行次数:0
运行
复制
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

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

同样通过Elasticsearch-head在ES 中也可以看到有相应的日志数据

2、通过配置rsyslog发送syslog日志到logstash

有些老版本的nginx不支持配置syslog输出日志,或者说我想输出其他不是nginx的日志该怎么办呢?可以通过直接配置rsyslog的方式来往外发送日志。

在/etc/rsyslog.conf 中配置

代码语言:javascript
代码运行次数:0
运行
复制
$IncludeConfig /etc/rsyslog.d/*.conf

意思是可以引用外部的配置文件,引用外部的配置文件一方面可以不影响主配置文件,另一方面也比较好管理 在/etc/rsyslog.d目录下新建nginx-log.conf 配置如下:

代码语言:javascript
代码运行次数:0
运行
复制
$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服务

代码语言:javascript
代码运行次数:0
运行
复制
systemctl restart rsyslog

我们访问nginx服务提供的web服务http://172.28.65.32/ 在logstash的控制台 可以看到同样的效果。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档