Rsyslog-王者归来

Deadly 提交于 2020-03-06 14:20:38

Rsyslog

公司所有人都在跟风学习es的日志方案,我也从3年前折腾到现在,filebeat + kafka + logstash + es,当时还想再搞个storm,后面发现就那么点日志量,搞个锤子kafka,好多原来一直在用的工具,都被互联网带坏了,一般小业务哪有机会用到人家高并发的方案,干脆回归初心,一步步研究起原始人使用的这些技术工具; syslog就是挺好用的日志收集工具,后面还有rsyslog 和 syslog-ng。先学习一下rsyslog吧, 一般小业务搞个这就好。

介绍

核心是rsyslog守护进程,该服务负责监听Linux下的日志信息,并把日志信息追加到对应的日志文件中,一般在/var/log目录下。 它还可以把日志信息通过网络协议((支持input有:RFC 3195,file,zmq3,klog等;))发送到另一台Linux服务器上,或者将日志存储在MySQL或Oracle等数据库中(支持的output有ES,mongo,mysql),当然还有一堆features,比如邮件发送啊,压缩啊等等,。 目前rsyslog的大版本为v8, 为电脑默认安装的是v7。 主要处理过程与其他日志处理方案一样,input->modify->output,每个环节都有若干插件可以使用。

配置

一般情况下,rsyslog 配置的文件文件位于/etc/rsyslog.conf 以及 /etc/rsyslog.d/文件夹下

全局配置

加载一些通用的模块

$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal

设置默认的日志格式

# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

规则 规则由选择器和动作组成,选择器说明来源和日志级别,而动作则说明如何处理对应的日志,下面是一些例子

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog

横线 - 说明是异步写入

自定义

Rsyslog中的队列

下图为rsyslog的队列,参考官方介绍

从图上可以看出,数据会经过两个队列,一个是主队列,一个是action队列

配置

模块

Module (load=”imudp”)

输入

Input (type=”imudp” port=”514”)

过滤

If $fromhost-ip == “172.19.1.135“ then {
Action (type=”omfile” File=”/var/log/network1.log”)
}

Rule set

Input (type=”imudp” port=”514” ruleset=”rs1”)

控制逻辑

if ($msg contains "word" and $source == "123.123.123.123") then {
    action()
    action()
} else {
    action()
    action()
}

参考

guide

https://www.rsyslog.com/category/guides-for-rsyslog/

pri

syslog协议的第一部分是尖括号引用的一个数字,如: <182> 该数字大小范围为: 0 ~ 255, 为1个字节表达的数字,包含两部分内容: 低三位: (0 ~ 7)称作: Severity

        Numerical         Severity
          Code
 
           0       Emergency: system is unusable
           1       Alert: action must be taken immediately
           2       Critical: critical conditions
           3       Error: error conditions
           4       Warning: warning conditions
           5       Notice: normal but significant condition
           6       Informational: informational messages
           7       Debug: debug-level messages

高5位(右移3位后): (0 ~ 31)称作:Facility

       Numerical             Facility
          Code
 
           0             kernel messages
           1             user-level messages
           2             mail system
           3             system daemons
           4             security/authorization messages (note 1)
           5             messages generated internally by syslogd
           6             line printer subsystem
           7             network news subsystem
           8             UUCP subsystem
           9             clock daemon (note 2)
          10             security/authorization messages (note 1)
          11             FTP daemon
          12             NTP subsystem
          13             log audit (note 1)
          14             log alert (note 1)
          15             clock daemon (note 2)
          16             local use 0  (local0)
          17             local use 1  (local1)
          18             local use 2  (local2)
          19             local use 3  (local3)
          20             local use 4  (local4)
          21             local use 5  (local5)
          22             local use 6  (local6)
          23             local use 7  (local7)
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!