rsyslog简单应用
rsyslog简介
-
Rsyslog的全称是
rocket-fast system for log
,可用于接受来自各种来源的输入,转换 它们,并将结果输出到目的地。 -
它提供了高性能、强大的安全功能和模块化设计。虽然rsyslog最初是一个常规的系 统日志,但它已经发展成为一种瑞士军刀式的日志记录,当应用有限处理时, RSYSLOG每秒可以向本地目的地发送超过一百万条消息。即使使用远程目的地和更 精细的处理,性能通常被认为是“惊人的”。
-
rsyslog是一个开源工具,被广泛用于Linux系统以通过TCP/UDP协议转发或接收日 志消息。rsyslog守护进程可以被配置成两种环境,一种是配置成日志收集服务器, rsyslog进程可以从网络中收集其它主机上的日志数据,这些主机会将日志配置为发 送到另外的远程服务器。rsyslog的另外一个用法,就是可以配置为客户端,用来过 滤和发送内部日志消息到本地文件夹(如/var/log)或一台可以路由到的远程rsyslog 服务器上。
-
官网地址:https://www.rsyslog.com/
安装
dnf install rsyslog-8.2102.0-105.el9.x86_64
查看状态
systemctl status rsyslog.service
默认日志路径
内核日志 /dev/console
通用信息日志 /var/log/messages
认证日志 /var/log/secure
邮件日志 -/var/log/maillog
任务计划日志 /var/log/cron
紧急消息日志 :omusrmsg:*
新闻系统日志 /var/log/spooler
启动日志 /var/log/boot.log
日志类型
auth #用户认证,比如用户登录系统
authpriv #服务认证,比如ssh远程登录
cron #时间任务
kern #内核类型
mail #邮件
news #系统更新信息
user #用户
日志级别
none #不采集
debug #程序排错信息
info #程序常规运行信息
notice #重要信息的普通日志
waring #程序警告
err #程序报错
crit #严重级别会导致系统软件不能正常工作
alert #系统中立即要更改的信息
emerg #系统的严重问题日志#从高到底依次为:
emerg(紧急) > alert(警告) > crit(严重) > err(错误) > warning(警告) > notice(通知) > info(信息) > debug(调试)
主配置文件/etc/rsyslog.conf
全局指令 (Global Directives)
#### GLOBAL DIRECTIVES ##### 工作目录,用于存储状态文件和队列文件
global(workDirectory="/var/lib/rsyslog")# 定义日志格式为传统时间戳格式
module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat")# 导入/etc/rsyslog.d/目录下的所有配置文件
include(file="/etc/rsyslog.d/*.conf" mode="optional")
模块加载 (Modules)
#### MODULES ##### 加载 imuxsock 模块,用于接收本地系统日志(例如通过 logger 命令生成的日志)
# SysSock.Use="off" 关闭本地日志套接字,改用 imjournal 模块从 systemd 获取日志
module(load="imuxsock" SysSock.Use="off") # 加载 imjournal 模块,用于从 systemd journal 获取日志
# StateFile 记录读取 journal 的位置,重启后可继续从断点读取
module(load="imjournal" StateFile="imjournal.state") #读取内核日志(现代系统中已通过 journald 读取,无需单独加载)
module(load="imklog")#提供 --MARK-- 消息功能(定期发送标记消息)
module(load="immark") #提供udp系统日志接收
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")#提供tcp系统日志接收
module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")
日志规则 (Rules)
#### RULES #####内核日志
#将所有内核消息输出到控制台(通常用于调试,生产环境一般注释掉)
#kern.* /dev/console#通用信息日志
# 记录除 mail、authpriv、cron 外的所有 info 级别及以上的日志到 /var/log/messages
# 排除 mail:避免邮件日志充斥 messages
# 排除 authpriv:认证相关日志单独存放
# 排除 cron:计划任务日志单独存放
*.info;mail.none;authpriv.none;cron.none /var/log/messages#认证日志
# 将所有 authpriv 设施的日志(如 sshd、sudo)记录到 /var/log/secure
# 该文件通常权限为 600,仅限 root 访问
authpriv.* /var/log/secure#邮件日志
# 将所有 mail 设施的日志记录到 /var/log/maillog
# 前缀 "-" 表示异步写入,提高性能(日志可能会延迟写入,但对邮件系统影响较小)
mail.* -/var/log/maillog#任务计划日志
#将 cron 设施的日志(计划任务执行情况)记录到 /var/log/cron
cron.* /var/log/cron#紧急消息日志
# 当发生紧急情况(如系统崩溃)时,向所有登录用户发送消息
*.emerg :omusrmsg:*#新闻系统日志
# 将 uucp 和 news 设施的 crit 级别及以上的日志记录到 /var/log/spooler
# 这些日志通常与系统间通信和新闻服务器相关
uucp,news.crit /var/log/spooler#启动日志
# 将 local7 设施的日志(通常是 bootloader 和系统启动过程)记录到 /var/log/boot.log
local7.* /var/log/boot.log
转发规则示例(sample forwarding rule)
# ### sample forwarding rule ###
action(type="omfwd" # 配置磁盘队列:当远程服务器不可用时,将日志暂存到磁盘queue.filename="fwdRule1" # 队列文件前缀queue.maxdiskspace="1g" # 最大磁盘空间 1GBqueue.saveonshutdown="on" # 关机时保存队列queue.type="LinkedList" # 使用链表队列,异步处理action.resumeRetryCount="-1" # 无限重试,直到远程服务器恢复# 远程服务器配置(TCP 协议保证可靠传输)Target="remote_host" Port="XXX" Protocol="tcp")
test
实验环境
主机1 rhel9,网卡nat,ip 192.168.60.10主机2 rhel9,网卡nat,ip 192.168.60.10
定义日志采集格式修改
1.编辑日志采集格式模板
$template CUSTOM_LOGFORMAT,"%FROMHOST-IP% %timegenerated% %syslogtag% %msg%\n"
#ip 时间戳 日志标签 日志内容主体
日志信息常用属性
%timestamp% | 日志生成时间(默认格式:Jul 14 10:00:00 ) | Jul 14 10:00:00 |
---|---|---|
%hostname% | 产生日志的主机名 / IP | server01 或 192.168.1.100 |
%programname% | 产生日志的程序名 | sshd 、nginx |
%syslogtag% | 日志标签(通常包含程序名和进程 ID) | sshd[12345]: |
%msg% | 日志内容主体 | Accepted password for user |
%syslogseverity-text% | 日志级别(文本形式) | info 、err |
%syslogfacility-text% | 日志设施(文本形式) | authpriv 、kern |
2.使用模板
#1、将模板写道规则后
*.* /var/log/dl;CUSTOM_LOGFORMAT
#2、修改默认日志格式
module(load="builtin:omfile" Template="CUSTOM_LOGFORMAT")
3.重启rsyslog服务,使配置生效
systemctl restart rsyslog.service
4.效果
自定义日志路径
1.进入主配置文件
vim /etc/rsyslog.conf
2.写入
*.*;authpriv.none /var/log/dl
#除了认证之外的所有日志信息都记录在/var/log/dl中
3.重启rsyslog服务,使配置生效
systemctl restart rsyslog.service
4.查看
日志同步
1.主机a接收方(192.168.60.10)配置
#进入主配置文件
vim /etc/rsyslog.conf#修改(udp)
module(load="imudp") # needs to be done just once #加载日志接收模块
input(type="imudp" port="514") #指定模块端口
#(tcp)
#module(load="imtcp") # needs to be done just once
#input(type="imtcp" port="514")#重启
systemctl restart rsyslog.service
#测试
netstat -antlupe | grep rsyslog
#关闭防火墙
systemctl stop firewalld.service
2.主机b发送方(192.168.60.20) 配置
#进入主配置文件vim /etc/rsyslog.conf#修改(udp)*.* @192.168.60.10#(tcp)*.* @@192.168.60.10#重启systemctl restart rsyslog.service
3.测试
主机b
logger test massages
主机a
tail /var/log/massages