Linux的rsyslog 配置
  TEZNKK3IfmPf 2023年11月12日 20 0

日常工作中,常遇到些问题,会查看Linux的系统日志,日志多种多样,boot.log, messages, auth.log, syslog等等,但每次出现问题总是凭借直觉和经验去一个一个翻,是下下策。搭建ELK,Loki等日志分析系统也是极好的,但是体积太大了,需要考虑和维护的东西也就更多。故而通过一些更轻量级的配置,加上自己的一些理解分析,想实现一套日志分析系统。而针对系统模块的日志,首当其冲的是要搞定rsyslog。

对日志进行分析,首先第一步要规整日志。

  • /etc/rsyslog.conf 是rsyslog服务的总配置文件
  • /etc/rsyslog.d 该目录是单独配置的rsyslog配置文件

个人建议,将所有的rule都配置在该目录下,在/etc/rsyslog.conf中不写rule。

日志类别

  • 系统日志

通过修改/etc/rsyslog.conf以及/etc/rsyslog.d/xxx.conf,来控制各种日志的输出

日志类型

日志内容

auth

用户认证时产生的日志

authpriv

ssh、ftp等登录信息的验证信息

daemon

一些守护进程产生的日志

ftp

FTP产生的日志

lpr

打印相关活动

mark

服务内部的信息,时间标识

news

网络新闻传输协议(nntp)产生的消息。

syslog

系统日志

security

uucp

Unix-to-Unix Copy 两个unix之间的相关通信

console

针对系统控制台的消息。

cron

系统执行定时任务产生的日志。

kern

系统内核日志

local0~local7

自定义程序使用

mail

邮件日志

user

用户进程

日志等级

说明

7

emerg

紧急情况,系统不可用(例如系统崩溃),一般会通知所有用户。

6

alert

需要立即修复的告警。

5

crit

危险情况,例如硬盘错误,可能会阻碍程序的部分功能。

4

error/err

一般错误消息。

3

warning/warn

警告。

2

notice

不是错误,但是可能需要处理。

1

info

通用性消息,一般用来提供有用信息。

0

debug

调试程序产生的信息。

none

没有优先级,不记录任何日志消息。

配置示例

# 记录mail日志等级为error及以上日志
mail.err /var/log/mail_err.log
# 记录mail所有等级为warn级别的日志(仅记录warn级别)
mail.=warn /var/log/mail_err.log
# 记录kern所有日志
kern.* /var/log/kern.log
# 将mail的所有信息,除了info以外,其他的都写入/var/adm/mail
mail.*;mail.!=info /var/adm/mail
# 将日志等级为crit或更高的内核消息定向到远程主机master
# 如果主机崩溃,磁盘出现不可修复的错误,可能无法读取存储的消息。如果有日志在远程主机上,可以尝试找出崩溃的原因。
kern.crit @master
# 记录所有类型的warning等级及以上日志
*.warning /var/log/syslog_warn.log
# 记录mail的warning日志和kern的error日志,其他所有的info日志
*.info;mail.warning;kern.error /var/log/messages
# 记录kernel的info到warning日志
kern.info;kern.!err /var/adm/kernel-info
# 将mail和news的info级别日志写入/var/adminfo
mail,news.=info /var/adm/info
# 将所有系统中所有类型的info日志和notice日志存入/var/log/massages,mail的所有日志除外。
*.=info;*.=notice;\
mail.none /var/log/messages
# 紧急消息(emerg级别)将使用wall显示给当前所有登录的用户
*.=emerg *
# 该规则将所有alert以及更高级别的消息定向到操作员的终端,即登录的用户“root”和“joey”的终端。
*.alert root,joey

模板元素属性(rsyslog Properties)

属性

释义|

msg

日志的信息内容,message。

rawmsg

不转义的日志内容。转义是默认开启的(EscapecontrolCharactersOnReceive),所以它有可能与socket中接收到的内容不同。

rawmsg-after-pri

几乎与rawmsg相同,但是删除了syslog PRI。

hostname

打印该日志的主机名。

source

hostname属性的别名。

fromhost

接收的信息来自于哪个节点。这里是DNS解析的名字。

fromhost-ip

接收的信息来自于哪个节点,这里是IP,本地的是127.0.0.1。

syslogtag

信息标签。大致形如 programed[14321] 。

programname

tag的一部分,就是上面的programed那个位置。

pri

消息的PRI部分-未解码(单值)

pri-text

文本形式的消息的PRI部分,并在括号中添加数值PRI(例如“local0.err<133>”)

iut

InfoUnitType 一款监视器软件,在与监视器后端通信的时候使用

syslogfacility

设备信息,数字形式表示

syslogfacility-text

设备信息,文本形式表示

syslogseverity

日志严重性等级,数字形式表示

syslogseverity-text

日志严重性等级,文本形式表示

syslogpriority

同 syslogseverity

syslogpriority-text

同 syslogseverity-text

timegenerated

高精度时间戳

timereported

日志中的时间戳。精度取决于日志中提供的内容(在大多数情况下,为秒级)

timestamp

同 timereported

protocol-version

IETF draft draft-ietf-syslog-protocol 中的 PROTOCOL-VERSION 字段的内容

structured-data

IETF draft draft-ietf-syslog-protocol 中的 STRUCTURED-DATA 字段的内容

app-name

IETF draft draft-ietf-syslog-protocol 中的 APP-NAME 字段的内容

procid

IETF draft draft-ietf-syslog-protocol 中的 PROCID 字段的内容

msgid

IETF draft draft-ietf-syslog-protocol 中的 MSGID 字段的内容

inputname

生成日志的输入模块的名称(如“imuxsock”、“imudp”)

jsonmesg

整个日志对象作为json表示。可能出现数据重复,譬如syslogtag包含着programname,但两者都会分别表示。所以这个属性有一些额外开销,建议只有在实际需要的时候再用。

Time-Related System Properties

与时间相关的系统属性(以 2020-07-08 16:57:36 为例)

属性

释义

$now

当前日期时间戳,格式为YYYY-MM-DD (2020-07-08)

$year

当前年份, 四位数 (2020)

$month

当前月份, 两位数 (07)

$day

当前月份的日期,两位数 (08)

$wday

当前天数周几 :0=Sunday,...6=Saturday

$hour

当前小时(24小时机制),两位数(16)

$hhour

半小时机值,就是0-29分钟显示0,30-59分钟显示1。

$qhour

一刻钟机值,通过0-3显示,每15分钟一截。

$minute

当前分钟数,两位数(57)

通过模板修改日志:

vim /etc/rsyslog.conf
# 创建一个名为cky_format的模板,其中 TIMESTAMP:8:15 表示timestamp属性值切片第八位到第十五位。
$template cky_format, "%$NOW% %TIMESTAMP:8:15% %hostname% %syslogseverity-text% %syslogtag% %msg%\n"
$ActionFileDefaultTemplate cky_format

#重启rsyslog
systemctl restart rsyslog

日志格式效果样例:

# NOW | timestamp:8:15| hostname| syslogseverity-text | syslogtag | msg
2020-07-09 09:59:54 mycomputer info systemd: Started System Logging Service.
# 时间戳 | 主机名 | 日志等级 | 服务进程 | 日志内容

独立的haproxy日志配置

其中local3.* 与配置文件中的日志配置保持一致

[root@node04 haproxy-1.8.20]# vim /etc/rsyslog.conf
local3.* /var/log/haproxy.log
$ModLoad imudp
$UDPServerRun 514

[root@node04 haproxy-1.8.20]# systemctl restart haproxy
[root@node04 haproxy-1.8.20]# systemctl restart rsyslog
[root@node04 haproxy-1.8.20]# ll /var/log/ha*
-rw-------. 1 root root 129 Jul 15 01:22 /var/log/haproxy.log


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   51   0   0 linux服务器
  TEZNKK3IfmPf   2024年05月31日   30   0   0 linux服务器centos
  TEZNKK3IfmPf   2024年05月31日   29   0   0 linuxbind
  TEZNKK3IfmPf   2024年05月31日   40   0   0 linuxshell