rsyslog
1.rsyslog: 此服务是用来采集系统日志的,他不生产日志,只是起到采集作用。
2.rsyslog的管理
| /var/log/messages | 服务信息日志 |
|---|---|
| /var/log/secure | 系统登陆日志 |
| /var/log/maillog | 邮件日志 |
| /var/log/boot.log | 系统启动日志 |
| /var/log/cron | 定时任务日志 |
3.指定日志采集路径
日志采集规则:将什么类型的日志,什么级别的日志 /var/log/file
日志类型分为:
| auth | pam产生的日志 |
|---|---|
| authpriv | ssh.ftp等登陆信息的验证信息 |
| cron | 时间任务相关 |
| kren | 内核 |
| lpr | 打印 |
| 邮件 | |
| mark(syslog)-rsyslog | 服务内部的信息,时间标识 |
| news | 新闻组 |
| user | 用户程序产生的相关信息 |
| uucp | unix to unix copy,unix主机之间相关的通讯 |
| local 1~7 | 自定义的日志设备 |
日志的级别分为:
| debug | 有调试信息的,日志信息最多 |
|---|---|
| info | 一般信息的日志,最常用 |
| notice | 最具有重要性的普通条件的信息 |
| warning | 警告级别 |
| err | 错误级别,阻止某个功能或者模块不能正常工作的信息 |
| crit | 严重级别,阻止整个系统或者整个软件不能正常工作的信息 |
| alert | 需要立刻修改的信息 |
| emerg | 内核崩溃等严重信息 |
| none | 什么都不记录 |
注意:
从上到下,级别从低到高,记录的信息越来越少
详细的可以查看手册:man 3 syslog
操作示例:
目的:把系统中所有日志采集到/var/log/westos文件中
操作:
vim /etc/rsyslog.conf
*.* /var/log/westos
systemctl restart rsyslog
注意: 必须重启服务才会生效!

测试:
systemctl restart sshd ##命令目的为了生成日志
cat /var/log/westos ##此文件中出现了日志信息

可以看到,任何类型,任何级别的日志都定向采集到文件/var/log/westos中了(底下的/etc/rc.d/rc.local本应该清空的)
4.日志的远程同步
首先,要先清空发送方和接收方/etc/rc.d/rc.local的内容
>/etc/rc.d/rc.local
reboot ##重启
在日志发送方:
vim /etc/rsyslog.conf
*.* @172.25.254.224 ##"@"表示UDP协议发送,“@@”表示TCP协议发送,地址为接收方的地址
systemctl restart rsyslog

在日志接收方:
vim /etc/rsyslog.conf
15:$ModLoad imudp ##日志接收模块
16:$UDPServerRun 514 ##开启接收端口
systemctl restart rsyslog

在接收方关闭防火墙:
systemctl stop firewalld ##关闭防火墙
systemctl disable firewalld ##设定防火墙开机关闭

测试:
在发送方和接收方都清空日志文件
> /var/log/messages
在日志的发送方:
logger hello
cat /var/log/messages ##查看日志已经生成

在日志的接收方查看:
cat /var/log/messages

注意:UDP和TCP的区别:
两种都是传输协议,UDP提供了无连接的数据报服务,而TCP是面向连接的传输控制协议,UDP在传输数据前不建立连接,不对数据报进行检查和修改,不需等待对方应答,所以会出现乱序,分组丢失,重复的问题,UDP的优点是:快速,网络开销小。TCP是先建立连接再传输数据,不会有数据丢失或乱序的情况出现,优点是稳定。
日志采集格式的设定
有时采集到的日志不是我们想要的格式,我们可以对日志采集的格式进行设定。
vim /etc/rsyslog.conf
定义WESTOS这样的采集格式:
$template WESTOS,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
| 说明 | |
|---|---|
| %timegenerated% | 显示日志时间 |
| %FROMHOST-IP% | 显示主机ip |
| %syslogtag% | 日志记录目标 |
| %msg% | 日志内容 |
| \n | 换行 |
例如,在server端按照WESTOS的格式采集日志,并将采集到的所有日志保存到/var/log/all_messages这个文件下:

查看生成日志的文件,可以看到采集到的日志格式发生了改变。

修改默认的日志采集格式
同样的在/etc/rsyslog.conf中,为了保险起见,我们先将默认格式复制一行注释掉,在添加新的一行,修改默认的采集格式为WESTOS。

可以看到其他收集日志文件的格式均发生了改变。


注意:本机的设定只对本机生效。
journal
journalctl 日志查看工具
| journalctl -n 3 | 查看最近的三条日志 |
|---|---|
| journalctl -p err | 查看错误日志 |
| journalctl -o verbose | 查看日志的详细参数,可以显示PID |
| journalctl --since | 查看从什么时候开始的日志 |
| journalctl --until | 查看到什么时候为止的日志 |
| journalctl --since --until | 查看两个时间段之间的日志 |
例如:
journalctl查看系统开机后的全部日志:

查看最近5条日志:

查看错误日志:

查看两个时间段之间的日志:

查看日志的详细参数:
systemctl status sshd.service
systemctl restart sshd.service
systemctl status sshd.service


如何使用systemd-journal保存系统日志
默认情况下systemd-journal是不保存系统日志到硬盘里的,所以当系统关机后再次开机只能看到本次开机后产生的日志,上次关机之前的日志是无法查看的。
所以我们可以作以下的设定:
首先我们建立一个日志目录,更改组,权限:

然后,killall -1的目的是进程重新加载该配置,不关闭。

重启后可以发现,关机前产生的日志同样得到了保存。

本文详细介绍rsyslog服务的功能,包括日志采集、管理和格式化,以及日志的远程同步方法。此外,还介绍了journalctl这一日志查看工具的使用方法。
1343

被折叠的 条评论
为什么被折叠?



