设为首页 收藏本站
查看: 1423|回复: 0

[经验分享] Rsyslog实现Nginx日志统一收集

[复制链接]

尚未签到

发表于 2018-11-13 11:03:06 | 显示全部楼层 |阅读模式
  一、rsyslog 介绍
  ryslog 是一个快速处理收集系统日志的程序,提供了高性能、安全功能和模块化设计。rsyslog 是syslog 的升级版,它将多种来源输入输出转换结果到目的地,据官网介绍,现在可以处理100万条信息。
  二、Rsyslog应用
  Rsyslog服务端配置
  下面有一些参数没有做中文解释,是因为我也不是太了解,没办法做出解释,测试不出具体效果
  需要自己去看看文档来解决了。
  配置文件/etc/rsyslog.conf
  $ModLoad imuxsock                                # provides support for local system logging (e.g. via logger command)
  $ModLoad imklog                                  # provides kernel logging support (previously done by rklogd)
  $ModLoad immark                                   # provides --MARK-- message capability
  $ModLoad imudp                                    #打开ucp连接,通过ucp传日志
  $UDPServerRun 514                                #UDP端口514
  #$ModLoad imtcp                                  #打开tcp连接,通过tcp传日志
  $InputTCPServerRun 10514                 #TCP端口10514
  #$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
  $IncludeConfig /etc/rsyslog.d/*.conf                                   #可以应用的配置文件
  $WorkDirectory /data/weblogs                                           #默认的存储路径
  $MainMsgQueueType LinkedList
  $MainMsgQueueHighWatermark 10000
  $MainMsgQueueLowWatermark 1000
  $MainMsgQueueMaxDiskSpace 20g                                           #占用磁盘总空间大小
  $MainMsgQueueMaxFileSize 200m                                           #单个文件的最大大小
  $MainMsgQueueSaveOnShutdown on
  $MainMsgQueueDiscardSeverity 8
  $template logfile,"/data/weblogs/nginx/log_bak/%syslogtag:F,91:1%.log"  #定义日志名称
  $template logFormat, "%msg:2:$%\n"                                      #定义日志内容格式
  $ActionFileDefaultTemplate logFormat                                    #定义默认的日志内容格式,需要先定义,在再这里应用
  local7.*         -?logfile
  Rsyslog  服务端配置相关参数解释:
  $template logfile,"/data/weblogs/nginx/log_bak/%syslogtag:F,91:1%.log"
  分析:
  %syslogtag%   这个是一个固定的格式,是rsyslog服务器端的日志名称
  例如nginx向rsyslog服务端传递的应该是这样的日志名称格式:learn1.game.access
  但是我们需要在rsyslog服务端,显示为learn1.game.access.log这样的格式
  在这个过程中就涉及到了正则和US-ASCII编码的匹配问题
  当前参数为:$template logfile,"/data/weblogs/nginx/log_bak/%syslogtag%"
  日志格式为:learn1.game.access[1534]
  匹配参数:F是指定分隔符,%syslogtag:F,91:1%,91是US-ASCII编码中"["符号的值,然后取1,也就是说取值[1534]前面的值,得出的格式是learn1.game.access,在最后加上.log后缀,完整格式为%syslogtag:F,91:1%.log,日志格式为learn1.game.access.log
  $template logFormat, "%msg:2:$%\n"
  %msg%获取到的是nginx日志内容,但是它的显示方式是连续且没有分隔的
  1)只获取%msg%内容
DSC0000.jpg

  红色框里的内容是一条完整的日志,其他的日志再后面顺序追加了,阅读感极差
  2)只获取%msg%\n内容
DSC0001.jpg

  3)完美的日志格式,%msg:2:$%\n
DSC0002.jpg

  已经很好的配置好了日志格式,对后期日志的刷选也方便了
  上述配置,是用到了正则表达式的相关知识。
  上面的两条配置涉及的只是比较多,在匹配这一块,涉及到了正则表达式,US-ASCII编码。
  关于其他内容访问一下url学习,没办法做出明确的总结
  学习链接:https://wiki.tankywoo.com/tool/rsyslog.html#_2
  http://www.cnblogs.com/tobeseeker/archive/2013/03/10/2953250.html
  http://www.cnblogs.com/hanyifeng/p/5463338.html
  官网文档:http://www.rsyslog.com/doc/v8-stable/configuration/modules/idx_input.html
  http://www.rsyslog.com/doc/v8-stable/configuration/property_replacer.html
  Nginx配置
  黄色部分为新添加的配置参数
  server
  {
  listen       80;
  server_name  learn1.proxy.com;
  index index.php  index.html index.htm;
  root  /data/www/learn1.proxy.com;
  error_log  /data/weblogs/learn1_error.log  crit;
  access_log  /data/wwwlogs/learn1.log  access;
  access_log   syslog:local7:info:192.168.110.47::learn1.game.access access;
  location ~ \.php$ {
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
  include        fastcgi.conf;
  }
  }


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-634504-1-1.html 上篇帖子: Rsyslog实现Nginx日志统一收集 下篇帖子: nginx做前端转发,将php交给php-fpm处理(nginx+php-fpm)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表