在centos7中,默认的日志系统是rsyslog,它是一个类unix计算机系统上使用的开源工具,用于在ip网络中转发日志信息。rsyslog采用模块化设计,是syslog的替代品。rsyslog具有如下特点:
实现了基本的syslog协议。
直接兼容syslogd的syslog.conf配置文件
在同一台机器上支持多个rsyslogd进程
丰富的过滤功能,可将消息过滤后再转发
灵活的配置选项,配置文件中可以写简单的逻辑判断
增加了重要的功能,如使用tcp进行消息传输
有现成的前端Web展示程序。
默认安装的ryslog软件包提供的守护进程是rsyslog,它是一项系统的基础服务。应该设置为开机运行,由systemd启动的。
systemctl enable rsyslog
systemctl start rsyslog
守护进程rsyslog在启动时会读取其配置文件。管理隐患可以通过编辑/etc/rsyslog.conf、/etc/rsyslog.d/*.conf和/etc/sysconfig/rsyslog来配置rsyslog的行为。/etc/sysconfig/rsyslog文件用于配置守护进程的运行参数,/etc/rsyslog.conf是rsyslog的主配置文件。
rsyslog的配置文件/etc/rsyslog.conf的结构如下:
全局命令(Global dirctives):设置全局参数、如主消息尺寸、加载扩展模块等
模版(Templates):指定记录的消息格式,也用于动态文件名称生成
输出通道(Output chananels):对用户期望的消息输出进行预定义。
规则(Rules)【selector +action】:指定消息规则。在规则中可以引用之前的定义模版和输出通道
以#开始的行为注释,所有空行将被忽略
规则配置每一行的格式如下:
facility.priority action
设备,级别 动作
设备字段说明:
auth –pam产生的日志
authpriv –ssh,ftp等登录信息的验证信息
cron –时间任务相关
ftp -FTP守护进程的信息
kern –内核
lpr –打印
mail –邮件
mark(syslog)–rsyslog服务内部的信息,时间标识
news –新闻组
user –用户程序产生的相关信息
uucp –unix to unix copy, unix主机之间相关的通讯
local 1~7 –自定义的日志设备
级别字段说明
ebug –有调式信息的,日志信息最多
info –一般信息的日志,最常用
notice –最具有重要性的普通条件的信息
warning –警告级别
err –错误级别,阻止某个功能或者模块不能正常工作的信息
crit –严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert –需要立刻修改的信息
emerg –内核崩溃等严重信息
none –什么都不记录
动作字段说明
filename -指定绝对路径的日志文件名来记录日志信息
:omusrmsg:users -发送信息到指定的用户,users可以是用逗号分隔符的用户类别,*表示所有用户
device -将信息发送到指定设备中,如/dev/console
|named-pipe -将日志记录到命令管道,用于日志调试非常方便
@hostname -将信息发送可解析远程主机hostname或IP,该主机必须正在运行rsyslogd,并可以识别rsyslog的配置文件,使用upd:514端口传送日志信息
@@hostname -将信息发送可解析远程主机hostname或IP,该主机必须正在运行rsyslogd,并可以识别rsyslog的配置文件,使用tcp:514端口传送日志信息
rsyslog.conf的说明如下所示:(关键配置)
#### MODULES ####
$ModLoad imuxsock # 提供本地系统日志支持(如通过logger命令)
$ModLoad imjournal # 提供对systemd journal的访问
#$ModLoad imklog # 提供内核日志支持(相当于systemed的systemd-journald.service)
#$ModLoad immark # 提供-MARK-消息功能
#### GLOBAL DIRECTIVES ####
# Use default timestamp format 使用默认日志的时间戳格式
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# Include all config files in /etc/rsyslog.d/ 包含/etc/rsyslog.d/目录下的配置文件
$IncludeConfig /etc/rsyslog.d/*.conf
#### RULES ####
# Log all kernel messages to the console. 将所有的内核消息记录到控制台
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher. 将info或更高级别的消息送到/var/log/messages,除了/mail/news/authpriv/cron之外
# Don't log private authentication messages! 其中*是通配符,代表任何设备:none表示不对任何级别的消息进行记录
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access. 将authpirv设备的任何级别的信息记录到/var/log/secure中
authpriv.* /var/log/secure
# Log all the mail messages in one place. 将mail设备中的任何级别信息记录到/var/log/mailog文件中
mail.* -/var/log/maillog
# Log cron stuff 将cron设备的任何级别的信息记录到/var/log/cron文件中
cron.* /var/log/cron
# Everybody gets emergency messages 将任何设备的emerg级别或者更高的消息发送给所有正在系统上用户
*.emerg :omusrmsg:*
# Save news errors of level crit and higher in a special file. 将uucp和news设备的crint级别或者更高级别消息记录到/var/log/spooler文件中
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log 将和本地系统启动相关的信息记录到/var/log/boot.log文件中
local7.* /var/log/boot.log
远程日志服务器
为了方便日志监控并防止日志被篡改、通常在工作网络中会架设中央日志服务器用于存放各个服务器的日志。rsyslog支持日志的远程发送和接受
rsyslog客户:负责发送日志到中央日志服务器,支持udp,tcp,relp协议
rsyslog服务器:负责接受从rsyslog客户发送的日志并存储在rsyslog服务器,支持日志文件存储、数据库存储
以下为rsyslog客户与rsyslgo服务器使用到的模块与配置语法
角色
功能
RPM包名
模块
配置语法
客户
使用udp协议发送
rsyslog
-
*.* @hostname:514
使用tcp协议发送
rsyslog
_
*.* @@hostname:514
使用relp协议发送
rsyslog-relp
omrelp
*.* :omrelp:hostnames:2514
服务器
使用udp协议接收
rsyslog
imudp
$ModLoad imudp
$InputUDPServerRun 514
使用tcp协议接收
rsyslog
imtcp
$ModLoad imtcp
$InputTCPServerRun 514
使用relp协议接收
rsyslog-relp
imrelp
$ModLoad imrelp
$InputRELPServerRun 2514
将日志记录到MySQL
ryslog-mysql
ommysql
$ModLoad ommysql
*.*:ommysql:DBserver,DBname,DBuser,DBpasswd
将日志记录到PostgreSQL
rsyslog-pgsql
ompgsql
$ModLoad ompgsql
*.*:ompgsql:DBserver,DBname,DBuser,DBpasswd
以下举例说明,将日志发送到远程主机
#已经配置好日志服务器172.31.101.52上的rsyslog(splunk)
#配置客户端rsyslog发送tcp端口日志,通过修改配置文件/etc/rsyslog.config上指定tcp传输的日志
echo 'mail.info @@172.31.101.52:514'>>/etc/rsyslog.conf #配置文件中追加发送邮件相关的日志,级别为值得报告的信息
sysctemctl restart rsyslog #重启syslog
#测试,在客户端执行logger命令进行测试
logger -p mail.info "this is a test for rmote log." #发送测试消息
发送测试完毕后,在日志服务器上(splunk)上可以收到发送的测试日志,证明rsyslog配置成功
查看详细信息,可以确定使用tcp514端口发送的日志
以下为系统中常用的日志文件说明,在/var/log/*路径
/var/log/messages — 包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。
/var/log/dmesg — 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。
/var/log/auth.log — 包含系统授权信息,包括用户登录和使用的权限机制等。
/var/log/boot.log — 包含系统启动时的日志。
/var/log/daemon.log — 包含各种系统后台守护进程日志信息。
/var/log/dpkg.log – 包括安装或dpkg命令清除软件包的日志。
/var/log/kern.log – 包含内核产生的日志,有助于在定制内核时解决问题。
/var/log/lastlog — 记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
/var/log/maillog /var/log/mail.log — 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。
/var/log/user.log — 记录所有等级用户信息的日志。
/var/log/Xorg.x.log — 来自X的日志信息。
/var/log/alternatives.log – 更新替代信息都记录在这个文件中。
/var/log/btmp – 记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“。
/var/log/cups — 涉及所有打印信息的日志。
/var/log/anaconda.log — 在安装Linux时,所有安装信息都储存在这个文件中。
/var/log/yum.log — 包含使用yum安装的软件包信息。
/var/log/cron — 每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。
/var/log/secure — 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。
/var/log/wtmp或/var/log/utmp — 包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。
/var/log/faillog – 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
除了上述Log文件以外, /var/log还基于系统的具体应用包含以下一些子目录:
/var/log/httpd/或/var/log/apache2 — 包含服务器access_log和error_log信息。
/var/log/lighttpd/ — 包含light HTTPD的access_log和error_log。
/var/log/mail/ – 这个子目录包含邮件服务器的额外日志。
/var/log/prelink/ — 包含.so文件被prelink修改的信息。
/var/log/audit/ — 包含被 Linux audit daemon储存的信息。
/var/log/samba/ – 包含由samba存储的信息。
/var/log/sa/ — 包含每日由sysstat软件包收集的sar文件。
/var/log/sssd/ – 用于守护进程安全服务