Nginx用rsyslog转发日志的一些小坑

我们从Nginx的代码中可以看到,给syslog发通知的时候,tag后面跟了2个字符 冒号+空格,所以阿里云这里的文档完全是坑爹

这里判断的是$syslogtag,也就是这种配置

这边配置tag为 nginx,而 $syslogtag 不会是 nginx,而是 nginx+冒号+空格

查了rsyslog文档,$syslogtag 行为本来就是程序自己定的,(),真正需要的是 这个 $programname

所以这样的配置是可以work的:

cat /etc/rsyslog.d/nginx.conf

注意,最后的那个 $ ~ 表示被上条规则匹配的日志不在发送到别的地方,因为nginx的默认的facility 是 local7 和boot.log是一样的,会造成发送日志的同时 也写入到boot.log ,造成boot.log巨大,这也是一个坑点。

另外其实,可以自己配置nginx的日志格式 满足ilogtail的采集规则,这样可以少走一次rsysylog。这里的 streamlog_tag 对应阿里云的syslog采集日志的时候的log tag.

Author Info :
  • From:Nginx用rsyslog转发日志的一些小坑
  • URL:https://blog.ihipop.com/2017/09/4973.html
  • Please Reserve This Link,Thanks!
  • 发表回复

    您的电子邮箱地址不会被公开。 必填项已用 * 标注