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)
来源:oschina
链接:https://my.oschina.net/guopei/blog/3189014