Linux 服务 | rsyslog
rsyslog 是实现日志功能的服务,用来采集日志信息。
主配置文件/etc/rsyslog.conf
中,可以设置日志的处理方式。
MODULES
-
默认开启的两个 imuxsock、imjournal
-
imuxsock
提供对本地系统日志记录的支持 -
imjournal
提供对systemd日志的访问 -
imudp
提供 UDP 方式系统日志接收 -
imtcp
提供 TCP 方式系统日志接收
RULES
-
规则设置的格式是
filter action
-
将
filter
过滤后的日志,送到action
处理 -
多个 rule 用分号隔开
*.info;mail.none
过滤器 filter
-
基于
设施.优先级
的过滤器。例:kern.* /dev/console
-
kern
是产生日志的设施,*
是日志优先级 -
设施类型(facility)
kern
内核信息
user
用户程序产生的相关信息
mail
邮件系统信息
daemon
守护进程产生的信息
auth
pam认证系统信息
syslog
日志系统自身信息
authpriv
ssh、ftp等登录信息
cron
系统执行定时任务产生的信息
lpr
打印相关信息
mark
服务内部的信息,时间标识
uucp
Unix-to-Unix Copy 两个unix之间的相关通信
local0-local7
保留,本地使用-
多个设施用
,
隔开 -
*
表示所有设施
-
-
日志优先级(priority)
-
debug (7) , info (6) , notice (5) , warning (4) , err (3) , crit (2) , alert (1) , emerg (0)
-
none
会记录没有指定级别的信息 -
*
记录所有级别信息 -
多个级别用
,
隔开
-
-
记录日志内容的设置
.
等级高于符号后面的信息会记录
.=
只有符号后面等级的信息会记录
.!
除了符号后面等级,其他的都会记录(注意前面需要先有其他过滤规则,否则什么不记录)
-
-
基于属性的过滤器。例
:msg, contains, "error"
-
:msg
是要比较的日志属性,contains
是要执行的比较操作,"error"
是比较的值 -
比较操作
contains
匹配提供的字符串值是否是属性的一部分,如果不区分大小写,使用contains_iisequal
比较属性和值是否相等startswith
属性是否以指定字符串开始(startswith_i)regex
正则表达式(POSIX BRE 基本正则)匹配ereregex
正则表达式(POSIX ERE 扩展正则)匹配isempty
判断属性是否为空,不需要 value
-
-
基于表达式的过滤器
- 使用了 rsyslog 自定义的脚本语言
RainerScript
构建复杂的 filter。
- 使用了 rsyslog 自定义的脚本语言
执行操作 action
多个 action 用&
连接
action 后面加;模板名
可以使用模板格式化日志
-
日志保存到日志文件。例
cron.* /var/log/cron.log
-
表示所有 cron 执行的日志都放在 cron.log 中
-
通常生成日志时会同步到日志文件。前面加
-
则忽略同步 -
可以动态生成日志文件,用预定义输出路径模板,并在文件名前加
?
-
-
通过网络发送日志信息
*.* @192.168.0.1 # 使用 UDP 发送,默认端口514 *.* @@example.com:18 # 使用 TCP 发送到端口18, 默认10514 *.* @(z9)[2001:db8::1] # UDP, ipv6,使用zlib级别9压缩
-
@
表示用 UTP 协议发送 -
@@
表示用 TCP 协议发送 -
z9
表示用 zlib 压缩日志级别,可设置 1-9。可以不设置压缩
-
-
丢弃日志,例
cron.* ~
- 使用
~
- 使用
模板 template
所有系统日志都可以用指定模板进行格式化
-
创建模板
$template TEMPLATE_NAME,"text %PROPERTY% more text", [OPTION]
-
TEMPLATE_NAME
为模板名称 -
"text %PROPERTY% more text"
为模板内容 -
OPTION
为模板功能,可设置sql
和stdsql
,数据库存储时用到
-
-
生成动态文件名
$template DynamicFile,"/var/log/test_logs/%timegenerated%-test.log" *.* ?DynamicFile
timegenerated
属性从日志信息中提取出信息时间戳
-
属性
-
属性放在两个
%
之间,可以取得日志信息中的内容。 -
可用的属性列表
man rsyslog.conf
-
服务确认
-
修改配置后重启服务
systemctl restart rsyslog.service
-
写入测试 log
logger -p syslog.info -t test "this is a test log."
-
在系统日志文件
/var/log/messages
中确认写入的测试 log
rsyslog 能满足几乎所有的日志处理。
以后有用到其他内容再来补充
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击