首页 > 代码库 > rsyslog转发nginx日志(rsyslog发送到logstashh)
rsyslog转发nginx日志(rsyslog发送到logstashh)
收集系统其它服务日志,在客户端上操作,以nginx 服务的日志为例
先修改配置文件 /etc/rsyslog.conf,内容如下:
#grep -v "^$" /etc/rsyslog.conf | grep -v "^#"
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad immark # provides --MARK-- message capability $ModLoad imklog $ModLoad imfile $WorkDirectory /var/lib/rsyslog $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $template myFormat,"%timestamp% %fromhost-ip% %msg%\n" $ActionFileDefaultTemplate myFormat $IncludeConfig /etc/rsyslog.d/*.conf $OmitLocalLogging on *.info;mail.none;authpriv.none;cron.none @@10.4.66.122 $InputFilePollInterval 1 $InputFileName /var/log/nginx/access.log $InputFileTag nginx-info: $InputFileStateFile state-nginx-info $InputRunFileMonitor
在配置文件开始的位置添加了几个装载的模块,后面添加了一些配置内容,中间取消了一些系统日志的发送
$InputFilePollInterval 1 检查日志文件间隔(秒)
$InputFileName /var/log/nginx/access.log 要监控的日志文件路径
$InputFileTag nginx-info: 定义文件标签 ,注意最后是冒号:
$InputFileStateFile state-nginx-info 定义状态文件
$InputRunFileMonitor 激活读取,可以设置多组日志读取,每组结束时设置本参数
修改完成后,重启客户端的rsyslog服务
#service rsyslog restart
访问一下nginx,验证一下,在接收端上查看一下日志
如果rsyslog想要吧日志发送给logstash有两种方法,第一种是让系统日志落地后转发,另外一个方法是用logstash监听接收日志的端口直接转发,下面介绍两种方法:
第一种日志落地转发,在logstash配置文件内写入如下内容:
input { file { path => "/data/log/10.4.66.121/10.4.66.121_2017.log" } } output { elasticsearch { hosts => ["10.4.66.105:9200"] index => "nginx-access-log-%{+YYYY.MM.dd.HH}" } }
通过以上配置文件内容可以将日志落地后转发到logstash服务器
第二种方法,监听接收端口直接转发,首先需要暂停rsyslog服务,防止端口冲突
input { syslog { port =>"514" } } output { elasticsearch { hosts => ["10.4.66.105:9200"] index => "nginx-access-log-%{+YYYY.MM.dd.HH}" } }
通过以上配置文件内容可以监听514端口收到的日志,直接转发到logstash
本文出自 “又白又菜” 博客,请务必保留此出处http://ls40905250.blog.51cto.com/1270522/1912129
rsyslog转发nginx日志(rsyslog发送到logstashh)