数码资讯
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% " $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,验证一下,在接收端上查看一下日志
650) this.width=650;" src="http://img.voidcn.com/vcimg/static/loading.png" title="QQ截图20170331151016.png" alt="wKioL1jeAXPgdMDAAACNo-jMm10821.png-wh_50" data-src="https://s4.51cto.com/wyfs02/M01/8F/6D/wKioL1jeAXPgdMDAAACNo-jMm10821.png-wh_500x0-wm_3-wmp_4-s_4123438298.png">
如果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