学习rsyslog日志管理服务的配置文件
# rsyslog configuration file 关于rsyslog软件的配置文件
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
想看到更多相关信息,可以去查看这个文件,rsyslog-*的*表示软件版本,我查了,可能本地没有这个文件
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
如果你遇到问题,也可以去这个网址查看,里面有常见的故障案例,等下截图演示
日志的配置文件由三部分组成:模块配置,全局配置,局部配置
第一部分:模块,可以看带哪些模块rpm -ql rsyslog 中以so结尾的,就是可提供的模块
#### MODULES ####
# The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
支持本地系统日志记录,默认打开
$ModLoad imjournal # provides access to the systemd journal
提供systemd管理时,以journalctl这个命令查看日志信息,默认打开
#$ModLoad imklog # reads kernel messages (the same are read from journald)
表示读取内核的消息,与systemd的journal类似,默认关闭的
#$ModLoad immark # provides --MARK-- message capability
提供mark标记功能,默认关闭
这是支持udp协议,接收日志,端口号是514
# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
支持tcp协议,接收日志,端口号是514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
这是第二部分:全局配置,通常不修改
#### GLOBAL DIRECTIVES ####
# Where to place auxiliary files
这里是一些辅助文件(查看了,就是imjournal.state)
$WorkDirectory /var/lib/rsyslog
# Use default timestamp format
使用默认时间戳格式
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
#File syncing capability is disabled by default. This feature is usually not required,
文件的同步功能是默认关闭的,这个功能通常是不需要的
# not useful and an extreme performance hit
没有用和极端功能点
#$ActionFileEnableSync on
自动同步文件的功能打开,这里是默认关闭的
# Include all config files in /etc/rsyslog.d/
这个文件夹包含了所有日志相关功能配置文件(去查看了一下,目前只有listen.conf)
$IncludeConfig /etc/rsyslog.d/*.conf
# Turn off message reception via local log socket;
关闭本地套接字接收消息
# local messages are retrieved through imjournal now.
本地消息通过imjournal来接收,可以理解为就是journal可以统一管理,这是systemd的管理日志的一个服务软件
$OmitLocalLogging on
# File to store the position in the journal
储存journal的位置
$IMJournalStateFile imjournal.state
在这个文件,这个文件就是/var/lib/rsyslog/下面的,前面提到的辅助文件夹
这是第三部分:可以理解为存放日志的规则
#### RULES ####
# Log all kernel messages to the console.
所有内核消息放在这个设备(console控制台的意思)
# Logging much else clutters up the screen.
记录更多的其他东西会使屏幕变得杂乱。
#kern.* /dev/console
默认关闭的状态
# Log anything (except mail) of level info or higher.
记录任何日志,除了邮件,以及安全级别在info以及以上的日志
拓展日志的8个等级:7debug调试,6info信息,5notice注意,4warning提醒,3err错误,2crit严重,1alter警告,0emerg紧急
# Don't log private authentication messages!
也不提供安全认证相关的日志
*.info;mail.none;authpriv.none;cron.none /var/log/messages
表示info级别以上,以及mail、authpriv、cron相关日志不记录到/var/log/messages文件中
这个是默认开启状态,也从内容分析知道,/var/log/messages基本包含了本系统大部分日志信息
# The authpriv file has restricted access.
安全认证通过的日志(如用户登录成功,ssh远程连接等)
authpriv.* /var/log/secure
这里的authpriv.*中的*表示相关所有日志等级
# Log all the mail messages in one place.
邮件相关的日志
mail.* -/var/log/maillog
# Log cron stuff
与计划任务相关的日志
cron.* /var/log/cron
# Everybody gets emergency messages
任何的紧急日志(我用find / -name :omusrmsg:*没找到相关的具体位置,可能是因为我当前系统没有紧急事项)
*.emerg :omusrmsg:*
# Save news errors of level crit and higher in a special file.
存储uucp和news设备相关,在crit级别以上的日志
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
记录/boot中设备相关日志,含有系统启动的日志信息
local7.* /var/log/boot.log
总结几点rule相关的设置:
##所有日志的存放位置都是可以自定义的
##rule部分中的所有日志,都使用1个@或者2@加ip的形式将日志通过udp或tcp传输到专门管理日志的服务器上,这个可以看之前的实操案例
##所有rule的格式都是[系统facility类型.日志级别范围 文件路径]
##关于日志facility:设施,从功能或程序上对日志进行归类
①内置分类
auth(验证), authpriv, cron(定时任务), daemon(守护进程),ftp(文件传输),kern(内核), lpr, mail, news, security(auth), user, uucp, syslog
②自定义的分类,名称只能是local,数字只能是0-7
local0-local7
自定义实操案例有ssh的服务日志独立
③关于日志级别,如果是*代表所有,如果是某个级别,表示该级别以上的
日志的8个等级:7debug调试,6info信息,5notice注意,4warning提醒,3err错误,2crit严重,1alter警告,0emerg紧急
# ### 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)
远程日志一般使用tcp进行可靠传输
#
# 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 # unique name prefix for spool files
这是脱机存信息的磁盘名称
#$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
磁盘空间可能限制为1G
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
关机的时候存在磁盘
#$ActionQueueType LinkedList # run asynchronously
异步运行
#$ActionResumeRetryCount -1 # infinite retries if host is down
如果主机关闭,重试
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
远程主机的主机名,端口
#*.* @@remote-host:514
举例为tcp的
# ### end of the forwarding rule ###
学习官网的2个典型故障案例
https://www.rsyslog.com/doc/v8-stable/troubleshooting/index.html
第一种:selinux安全和firewalld需要关闭
第二种:限制打开文件的最大数量(我理解的是需要limit调优)
用yum或者rpm安装的软件,一般会默认将日志存放在这个文件夹中,主要还是以服务的配置文件内容说明为准
比如我下载的httpd、chrony(时间同步)
[root@localhost rsyslog]#cd /var/log
[root@localhost log]#ls
anaconda chrony lastlog sa vmware-vgauthsvc.log.0
audit cron libvirt samba vmware-vmsvc.log
boot.log cron-20231105 maillog secure vmware-vmusr.log
boot.log-20231105 cups maillog-20231105 secure-20231105 wpa_supplicant.log
boot.log-20231106 dmesg messages speech-dispatcher wtmp
boot.log-20231107 dmesg.old messages-20231105 spooler Xorg.0.log
boot.log-20231108 firewalld ntpstats spooler-20231105 Xorg.0.log.old
boot.log-20231109 gdm pluto sssd Xorg.9.log
boot.log-20231110 glusterfs ppp sudo yum.log
boot.log-20231111 grubby_prune_debug qemu-ga tallylog
btmp httpd rhsm tuned
常见的日志
/var/log/btmp:登录失败用户的日志,二进制文件,使用lastb查看
/var/log/wtmp:登录成功用户的日志,二进制文件,使用last查看
/var/log/lastlog:上一次登录的日志,二进制文件,使用lastlog查看
/var/log/dmesg:设备日志文件
/var/log/messages :系统大量的日志信息
/var/log/secure:安全认证,可读,比如ssh或者正常的用户登录,身份认证