Linux 之日志处理系统 rsyslog
文章
林里克斯
rsyslog
的全称是 rocket-fast system for log
即快速系统日志,rsyslog
是 syslog
的升级版本,在 CentOS6
以前使用的是 syslog
。rsyslog
可以快速处理收集系统日志的程序,提供了高性能、安全功能和模块化设计。
实验平台:
CentOS Linux release 7.6.1810 (Core)
rsyslog Version:
8.24.0
一、rsyslog 功能及介绍
1.特点
- 能接收各种各样的来源日志数据;
- 输出存储至各类数据库:
MySQL
,PostgreSQL
,MongoDB
,ElasticSearch
等; - 加密传输:
tls
,ssl
,relp
- 自定义输出数据的格式
- 多线程
- 支持多种传输协议:
TCP
,UDP
;
2.功能
rsyslog
是一个C/S
架构的服务,可监听于某套接字,帮其它主机记录日志信息,在linux
系统中可以分类两个日志- 把旧日志轮转、压缩、删除,并且创建新的日志文件;
二、配置使用
1.安装
$ rpm -qa | grep rsyslog
rsyslog-8.24.0-34.el7.x86_64
#CentOS 默认都是有安装的,如果没有使用 yum 安装
$ sudo yum -y install rsyslog
2.相关文件
/etc/rsyslog.conf
#配置文件
/etc/rsyslog.d/
#自定义扩展配置文件存放目录
/usr/sbin/rsyslogd
#主程序命令名称
/usr/lib64/rsyslog
#模块存放路径
3.配置文件详解
MODULES
(模块)GLOBAL DIRECTIVES
(全局配置)RULES
(规则)begin forwarding rule
(转发规则)
配置文件主要由这四块内容组成
$ cat /etc/rsyslog.conf
# rsyslog configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### MODULES #### 模块
# The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock #提供对本地系统日志记录的支持(例如通过 logger 命令)
$ModLoad imjournal #提供对systemd日志的访问
#$ModLoad imklog #读取内核消息(与从日志中读取相同)
#$ModLoad immark #提供 ——MARK——message 功能
# 使用 UDP syslog 接收日志功能
#$ModLoad imudp
#$UDPServerRun 514
# 使用 TCP syslog 接收日志功能
#$ModLoad imtcp
#$InputTCPServerRun 514
#514 为监听端口
#### GLOBAL DIRECTIVES #### 全局配置
$WorkDirectory /var/lib/rsyslog
#定义辅助文件存放路径
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
#使用默认的时间戳格式
#$ActionFileEnableSync on
#打开文件同步功能,默认是禁用的。这个特性通常不是必需的,无用,对性能影响极大
$IncludeConfig /etc/rsyslog.d/*.conf
#扩展配置文件路径
$OmitLocalLogging on
#关闭通过本地日志套接字接收消息;本地消息使用 imjournal 检索。
$IMJournalStateFile imjournal.state
#在日记本中保存文件的位置
#### RULES #### 规则
#kern.* /dev/console
#内核相关日志
*.info;mail.none;authpriv.none;cron.none /var/log/messages
#记录任何级别或更高级别的信息(邮件除外)。不要记录私人身份验证消息!
authpriv.* /var/log/secure
#SSH、FTP 等登录相关日志;
mail.* -/var/log/maillog
#邮件相关日志及邮件日志
cron.* /var/log/cron
#任务计划相关日志
*.emerg :omusrmsg:*
#Everybody gets emergency messages
uucp,news.crit /var/log/spooler
#UNIX to UNIX cp 相关日志,新闻相关日志;
local7.* /var/log/boot.log
#引导相关的日志
参考项:
1.facility(设施):标识系统需要记录日志的子系统
auth #PAM认证相关日志;
authpriv #SSH、FTP登录相关日志;
cron #任务计划相关日志;
daemon #守护进程相关日志;
kern #内核相关日志;
lpr #打印相关日志;
mail #邮件相关日志;
mark #标记相关日志;
news #新闻相关日志;
security #安全相关日志与auth类似;
syslog #Rsyslog自己的日志;
user #用户相关日志;
uucp #UNIX to UNIX cp相关日志;
local0 to local7 #用户自定义使用设置日志;
* #表示所有的facility;
2.priority(级别):用来标识日志级别,级别越低信息越详细,有以下日志级别,从上到下,级别从低到高,记录的信息越来越少
debug #程序或系统调试信息;
info #一般信息;
notice #不影响正常功能需要注意的信息;
warning #可能影响系统功能提醒用户的重要事件;
error #错误信息;
crit #比较严重的信息;
alert #必须马上处理的警告信息;
emerg/panic #会导致系统不可用的严重信息;
* #表示所有日志级别;
none #跟*相反表示什么都没有;
3.action(动作):设置日志记录的位置
记录到普通文件或设备文件
*.* /var/log/file.log #绝对路径
*.* /dev/pts/0 #设备文件
"|",表示将日志送给其他命令处理
"@HOST",表示将日志发送到特定的主机
*.emerg @192.168.1.1
4)"用户",表示将日志发送到特定的用户
5)"*",表示将日志发送所有登录到系统上的用户
4.连接符合:
. #表示大于等于xxx级别的信息;
.= #表示等于xxx级别的信息;
.! #表示在xxx之外的等级的信息;
# ### begin forwarding rule ### 转发规则
# The statement between the begin ... end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$ActionQueueFileName fwdRule1 #spool文件的唯一名称前缀
#$ActionQueueMaxDiskSpace 1g #空间限制(尽量使用)
#$ActionQueueSaveOnShutdown on #在关机时将消息保存到磁盘
#$ActionQueueType LinkedList #运行异步
#$ActionResumeRetryCount -1 #如果主机故障,无限重试
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###
4.案例
auth.=info @192.168.10.1
#表示将auth相关的基本为info信息记录到远程主机
mail.info /var/log/mail.log
#表示将mail相关的,info级别及以上级别都记录到mail.log文件中
*.info
#表示记录所有日志信息的info级别及以上级别
user.!error
#表示记录与user和error相反的
*.*
# 所有日志及所有级别信息都记录下来
4.1 使用 mysql
存储
$ sudo yum -y install rsyslog-mysql
#安装 ommysql 模块,安装之后会在 /usr/lib64/rsyslog 目录下生成 ommysql.so 模块
$ sudo vim /etc/rsyslog.conf
$ModLoad ommysql
#写入 mysql 需要使用 ommysql 模块
*.info;authpriv.* :ommysql:10.10.13.8,syslog(库名),root(用户),mysql123(密码)
#这里演示就直接使用 root 用户了,生成环境建议新建一个用户
搭建 mysql 服务省略,安装完 rsyslog-mysql 后,还会生成一个 sql 文件,需要导入到 mysql 中
$ /data/mysql/bin/mysql -S /data/mysql/mysql.sock -u root -p < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
$ sudo systemctl restart rsyslog
#重启服务
$ logger "AMD YES"
$ tail -1 /var/log/messages
Mar 24 16:44:10 elasticsearch root: AMD YES
> use syslog;
> select * from systemevents\G;
*************************** 1. row ***************************
ID: 1
CustomerID: NULL
ReceivedAt: 2021-03-24 16:44:10
DeviceReportedTime: 2021-03-24 16:44:10
Facility: 1
Priority: 5
FromHost: elasticsearch
Message: AMD YES
NTSeverity: NULL
Importance: NULL
EventSource: NULL
EventUser: NULL
EventCategory: NULL
EventID: NULL
EventBinaryData: NULL
MaxAvailable: NULL
CurrUsage: NULL
MinUsage: NULL
MaxUsage: NULL
InfoUnitID: 1
SysLogTag: root:
EventLogType: NULL
GenericFileName: NULL
SystemID: NULL
#去数据库里查看数据,Message 就是日志内容。FromHost 是主机名
5.验证配置文件是否有误
$ sudo rsyslogd -N1 -f /etc/rsyslog.conf
rsyslogd: version 8.24.0-57.el7_9, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: End of config validation run. Bye.
Over~
版权协议须知!
本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
1505 0 2021-03-24
博主卡片
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。
现在时间 2024-12-28
今日天气
站点统计
- 文章总数:241篇
- 分类总数:29个
- 评论总数:12条
- 本站总访问量 353825 次
@xiaozi 最后的分享的镜像下载地址打不开 服务器没有开机吗?
@yuanyuan 为什么我的4b安装centos7.9 插上tf卡 显示不兼...
@Wong arrhenius 牛比
@MakerFace 厉害了!
@TongSir 老哥 更新下我的友链链接 https://blog.ton...