在centos7中,默认的日志系统是rsyslog,它是一个类unix计算机系统上使用的开源工具,用于在ip网络中转发日志信息。rsyslog采用模块化设计,是syslog的替代品。rsyslog具有如下特点:
实现了基本的syslog协议。
直接兼容syslogd的syslog.conf配置文件
在同一台机器上支持多个rsyslogd进程
丰富的过滤功能,可将消息过滤后再转发
灵活的配置选项,配置文件中可以写简单的逻辑判断
增加了重要的功能,如使用tcp进行消息传输
有现成的前端Web展示程序。
默认安装的ryslog软件包提供的守护进程是rsyslog,它是一项系统的基础服务。应该设置为开机运行,由systemd启动的。
守护进程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】:指定消息规则。在规则中可以引用之前的定义模版和输出通道
以#开始的行为注释,所有空行将被忽略
规则配置每一行的格式如下:
设备字段说明:
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的说明如下所示:(关键配置)
远程日志服务器
为了方便日志监控并防止日志被篡改、通常在工作网络中会架设中央日志服务器用于存放各个服务器的日志。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 |
以下举例说明,将日志发送到远程主机
发送测试完毕后,在日志服务器上(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/ – 用于守护进程安全服务