日志管理及优化
一、journald
企业中,对日志进行管理是非常重要的,一般系统出现的问题都体现在日志中。日志是由程序本身产生的,journald是RHEL7以后出现的日志采集工具,它将程序产生的日志放在磁盘中可供查看
服务名称:systemd-journald.service
日志默认的存放路径:/run/log
日志的查看工具:journalctl
示例1:用journalctl
查看日志示例2:用
journalctl
查看日志最新三行示例3:重启sshd服务后用
journalctl
查看日志最新三行示例4:指定日志起始查看时间
journalctl --since
,例如系统当前时间为19:48,可以查看从19:47开始系统中产生的日志示例4:指定日志终止查看时间
journalctl --until
,例如系统当前时间为19:52,查看从19:47开始到19:48结束系统中产生的日志示例5:用经典模式显示日志
journalctl -o short
,经典模式即为默认模式,与用journalctl
查看日志时显示的结果相同示例6:显示日志的全部字节,全部信息
journalctl -o verbose
示例7:显示适合传出和备份的二进制格式
journalctl -o export
示例8:显示js格式
journalctl -o json
示例9:显示指定级别的日志
journalctl -p 参数
日志的级别可以分为8类,按照从高到低的顺序列在下表中
0 | emerg | 内核崩溃 |
---|---|---|
1 | alert | 需要立即修改 |
2 | crit | 严重级别,阻止整个系统不能正常工作的信息 |
3 | err | 错误级别,阻止某个功能或某个模块不能正常工作 |
4 | warning | 警告级别 |
5 | notice | 重要信息的普通日志 |
6 | info | 一般信息 |
7 | debug | 程序排错信息 |
例如:显示警告级别的信息journalctl -p warning
示例10:查看可控日志级别
journalctl -F PRIORITY
,显示2-7可以查看
示例11:journalctl -p 数字
,查看指定级别的日志示例12:
journalctl -u
,查看指定服务日志
例如:查看sshd服务的日志示例13:
journalctl --disk-usage
,查看日志大小
设置日志的存放大小journalctl --vacuum-size=1G
设置为1G,这个命令可以在设置内存占满后将最早的日志清空,完成日志的回滚设置,防止系统磁盘被填满
设置日志在系统中的最长存放时间journalctl --vacuum-time=1W
示例14:journalctl -f
,对日志进行监控
在一个shell中建立监控命令在另一个shell中重启sshd服务
示例14:
journalctl -u sshd
查看指定服务sshd的日志时会显示很多的sshd服务日志,当想要查看当前或者某一个指定sshd服务的日志时可以在journalctl -o verbose
中查找指定日志的id进行查看示例15:可以通过指定ip指定服务的方式查看指定日志
示例16:在journald中默认日志的存放位置为/run/log,所以用工具journalctl查看日志时,只记录从当前系统开启后的日志
示例17:当需要永久保存日志时,需要更改系统日志的存放路径
建立目录/var/log/journal,并且更改目录的所有组以及目录权限,重启服务查看服务目前的状态
重启系统后用
journalctl
查看之前的日志是否被保存下来,结果显示,重启系统后,之前的日志保存下来了
二、rsyslog
服务名称:rsyslog.service
配置文件:/etc/rsyslog.conf
日志存放路径是分类保存的,常见的路径以及存放日志类型如下表
/var/log/messages | 记录大多数系统的日志信息 |
---|---|
/var/log/secure | 安全和身份认证的消息 |
/var/log/maillog | 与邮件服务相关的日志信息 |
/var/log/cron | 与定时任务相关的日志信息 |
/var/log/boot.log | 与系统启动有关的日志信息 |
rsyslog和journal方式不同,这种日志采集方式不提供日志采集工具,而是直接通过更改配置文件来设置采集方式
实验一、自定义日志采集路径将系统中所有类型,所有级别的日志都存放在/var/log/wang中
将系统中所有级别所有类型的文件除了authpriv类型都存放在/var/log/dan中
将/var/log/messages中的内容清空,更改配置文件后重启服务,查看/var/log/wang中是否保存了系统日志
在rsyslog中,常见的日志类型分为
auth | pam产生的日志 |
---|---|
authpriv | ssh,ftp等登录信息产生的日志 |
cron | 时间任务相关 |
kern | 内核 |
邮件 | |
news | 新闻组 |
user | 用户程序产生的相关信息 |
常见的日志级别和journald中很类似
debug | 调试信息,日志信息 |
---|---|
info | 一般信息的日志,做常用 |
notice | 重要的普通信息 |
warning | 警告级别 |
err | 错误级别,阻止某个功能或模块不能正常工作 |
crit | 严重级别,阻止整个系统不能正常工作 |
alert | 需要立即修改 |
emerg | 内核崩溃等 |
none | 什么都不记录 |
实验二、更改日志的采集格式
仍然需要在配置文件中更改常见的格式定义有
%timegenerated% | 显示日志时间 |
---|---|
%FROMHOST-IP% | 显示主机ip |
%syslogtag% | 日志记录目标 |
%msg% | 日志内容 |
\n | 换行 |
更改配置文件内容如下
定义日志格式WANG为30行所示在日志存存放路径/var/log/messages后加上
;WANG
表示存放在此处的日志信息按照WANG的格式采集默认情况下日志格式如下
更改后日志格式如下
三、远程同步日志
在企业管理过程中,需要查看不同主机上产生的日志,单独每个主机的查看非常不方便,所以需要将多台远程主机的日志同步到一台主机上再进行查看
此次实验需要两台能够通信的主机。我们将rhel7设置为日志接收端,将rhel8设置为日志发送端
接收端:这个功能的实现首先需要关闭接收端的防火墙,然后在配置文件中进行相应的操作
在日志接收端打开日志同步接受插件并且指定插件使用的接口为514
重启服务并查看插件接口是否打开
发送端:同样需要更改配置文件在接收端和发送端都清空/var/log/messages文件
在发送端:用日志测试工具logger产生测试日志
在接收端查看日志是否同步
四、timedatectl
示例1:更改当地时间
timedatectl set-time 时间
示例2:列出系统中所有的时区
示例3:更改系统的时区
示例3:设置系统时间的计算方式
设定系统计算方式为UTC方式设定系统时间计算方式为普通方式
五、时间同步服务
服务名称:chronyd.service
配置文件:/etc/chrony.conf
在实现这个功能时,我们也需要两台能够通信的主机,令rhel7作为时间源,rhel8去同步7的时间
在rhel7中关闭火墙,在配置文件中做如下更改:开启时间同步服务器功能并设定级别为10在rhel8中更改配置文件如下
结果显示时间已经同步到rhel7中