乐趣区

关于linux:rsyslog详解

这边应用的是 3A 服务器
一、日志介绍
日志概念

日志是零碎用来记录零碎及利用程序运行时的一些相干信息的文本文件

日志作用

日志是为了保留相干程序的运行状态、错误信息等,为了对系统进行剖析、保留历史记录以及在呈现谬误时发现、剖析谬误应用

linux 系统日志类型

内核信息

服务信息

应用程序信息

二、rsyslog
1、rsyslog 介绍
rsyslog 是 linux 零碎中用来实现日志性能的服务。默认曾经装置,并且主动启用。

作用:次要用来采集日志,不生产日志

其个性包含:

反对输入日志到各种数据库,如 MySQL,PostgreSQL,MongoDB ElasticSearch,等等;通过 RELP + TCP 实现数据的牢靠传输(基于此联合丰盛的过滤条件能够建设一种 牢靠的数据传输通道供其余利用来应用);精密的输入格局管制以及对音讯的弱小 过滤能力;高精度工夫戳;队列操作(内存,磁盘以及混合模式等);反对数据的加密和压缩传输等。

2、rsyslog 概念
facility

设施,用来定义日志音讯的起源,不便对日志进行分类

日志类型 日志内容
kern 内核信息
user 用户程序产生的相干信息
mail 邮件系统信息
daemon 守护过程产生的信息
auth pam 认证零碎信息
syslog 日志零碎本身信息
authpriv ssh、ftp 等登录信息
cron 零碎执行定时工作产生的信息
lpr 打印相干信息
mark 服务外部的信息,工夫标识
uucp Unix-to-Unix Copy 两个 unix 之间的相干通信
local0-local7 保留,本地应用
priority

日志级别,定义不同音讯的级别

日志等级 阐明(级别从低到高,记录信息越来越少)
0 debug 蕴含具体的开发情报的信息,通常只在调试一个程序时应用。
1 info 通用性信息,个别用来提供有用信息,
2 notice 失常信息,然而较为重要,可能须要解决
3 warning 正告信息
4 error/err 错误信息,某个性能或者模块不能失常工作的信息
5 crit 重大级别,零碎或整个软件不能失常工作的信息,例如硬盘谬误
6 alert 须要立即批改的信息,如零碎数据库被毁坏,ISP 连贯失落。
7 emerg 紧急情况,内核奔溃等重要信息
none 什么也不记录
日志设施的配置

符号 阐明
. 比前面还要高的信息等级都会记录下来
.= 只有前面这个音讯等级会被记录下来
.! 除了前面的音讯等级,其余的都会被记录下来(留神后面须要先有其余过滤规定,否则什么不记录)
3、rsyslog 配置
rsyslog.conf 组成
modules,模块,配置加载的模块,如:ModLoad imudp.so 配置加载 UDP 传输模块

global directives,全局配置,配置 ryslog 守护过程的全局属性,比方主信息队列大小(MainMessageQueueSize)

rules,规定(选择器 + 动作),每个规定行由两局部组成,selector 局部和 action 局部,这两局部由一个或多个空格或 tab 分隔,selector 局部指定源和日志等级,action 局部指定对应的操作

模板(templates)

输入(outputs)

罕用 modules
imudp,传统形式的 UDP 传输,有损耗
imtcp,基于 TCP 明文的传输,只在特定状况下失落信息,并被宽泛应用
imrelp,RELP 传输,不会失落信息,但只在 rsyslogd 3.15.0 及以上版本中可用
规定(rules)
规定选择器(selectors)

selector 也由两局部组成,设施和优先级,由点号. 分隔。

第一部分为音讯源或称为日志设施,第二局部为日志级别。

多个抉择器用; 分隔,如:*.info;mail.none。

动作(action)
action 是规定形容的一部分,位于选择器的前面,规定用于解决音讯

音讯内容能够被写入到一个日志文件中,也能够写入到数据表表或转发到其余主机,还能够发送给主机用户 (能够指定用户名,用 * 示意所有)

RULES 配置示例
写入到本地文件中

facility.priority action

facility.priority 日志类型. 级别
action 保留地位(文件、用户、日志服务器)

记录 mail 日志等级为 error 及以上日志
mail.err /var/log/mail_err.log

将 mail 的所有信息,除了 info 以外,其余的都写入 /var/adm/mail
mail.*;mail.!=info /var/adm/mail

紧急音讯(emerg 级别)将应用 wall 显示给以后所有登录的用户
.=emerg

该规定将所有 alert 以及更高级别的音讯定向到操作员的终端,即登录的用户“root”和“joey”的终端。
*.alert root,joey

如果是日志服务器格局是:
. @192.168.100.1 (应用 UDP 协定发送)
. @@192.168.100.1 (应用 TCP 协定发送)

写入到 mysql 数据库中

modules, 要将日志写到 mysql 中须要加载 ommysql 模块
$ModLoad ommysql

rule, send to mysql

. :ommysql:database-server,database-name,database-userid,database-password

. :ommysql:127.0.0.1,Syslog,syslogwriter,topsecret

模板(templates)
模板容许你指定日志信息格式

也可用于生成动静文件名,或在规定中应用

TEMPLATE_NAME:模板的名字;

PROPERTY:rsyslog 自身反对的一些属性参数。
应用规定
$template TEMPLATE_NAME,”text %PROPERTY% more text”, [OPTION]

以工夫字符串结尾的文件
$template DynamicFile,”/var/log/test_logs/%timegenerated%-test.log”

以年月日主机名为目录下的文件
$template DailyPerHostLogs,”/var/log/syslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/messages.log”

自定义日志内容格局
$template LOGFMT,”%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n”

援用自定义的 动静文件名 中定义的内容
*.info ?DailyPerHostLogs
. ?DynamicFile
. /var/log/myinfo.log;LOGFMT
—模板元素属性
属性 阐明
msg 日志的信息内容,message
hostname 打印该日志的主机名
source hostname 属性的别名
fromhost 接管的信息来自哪个节点。这里是 dns 解析的名字
fromhost-ip 接管的信息来自哪个节点,这里是 ip,本地是 127.0.0.1
syslogtag 日志记录指标
timegenerated 高精度显示日志工夫
timesteamp 同 timegenerated
timereported 日志中的工夫戳
syslogseverity 日志严重性等级,数字模式示意
syslogseverity-text 日志严重性等级,文本模式示意
jsonmesg 整个日志对象作为 json 示意。可能呈现数据反复,譬如 syslogtag 蕴含着 programname,但两者都会别离示意。所以这个属性有一些额定开销,倡议只有在理论须要的时候再用。
批改模板日志

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
2021-12-09 09:59:54 mycomputer info systemd: Started System Logging Service.

工夫戳         |      主机名   | 日志等级 | 服务过程 |   日志内容

三、rsyslog 近程传输
1、UDP 传输
Server 端配置
/etc/rsyslog.conf

Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
$AllowedSender UDP, 192.168.80.0/24

This one is the template to generate the log filename dynamically, depending on the client’s IP address.
依据客户端的 IP 独自寄存主机日志在不同目录,syslog 须要手动创立
$template Remote,”/var/log/syslog/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log”

Log all messages to the dynamically formed file.
:fromhost-ip, !isequal, “127.0.0.1” ?Remote
排除本地主机 IP 日志记录,只记录近程主机日志
留神此规定须要在其它规定之前,否则配置没有意义,近程主机的日志也会记录到 Server 的日志文件中
2、TCP 传输
Server 端配置

Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
$AllowedSender TCP, 192.168.80.0/24

This one is the template to generate the log filename dynamically, depending on the client’s IP address.
$template Remote,”/var/log/syslog/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log”

Log all messages to the dynamically formed file.

:fromhost-ip, !isequal, “127.0.0.1” ?Remote

Client 端配置

/etc/rsyslog.conf

. @@192.168.80.130

退出移动版