实验环境
systemctl stop firewalld
一、journald
服务名称:systemd-journald.service
默认日志存放路径: /run/log
#用命令查看服务状态
#默认存放路径:目录的名字是机器码,在机器码目录下存放日志文件,文件格式是在线文件
#一旦删除文件再重启systemd-journald.service服务就会重新生成新文件,之前的日志数据就没有了。
1、journalctl命令的用法
journalctl ##显示日志
journalctl -n 3 ##显示日志的最新3条
journalctl --since "2021-01-20 10:00:00“ ##显示10:00后的日志
journalctl --until "2021-01-20 10:05:59" ##显示日志到10:05
journalctl -o #设定日志的显示方式,有以下选择
short ##标准经典模式显示日志
verbose ##显示日志的全部字节
export ##适合传出和备份的二进制格式
json ##js格式显示输出
journalctl -p
##0 emerg 系统的严重问题日志
##1 alert 系统中立即要更改的信息
##2 crit 严重级别会导致系统软件不能正常工作,有些硬件没有导致软件不正常
##3 err 程序报错
##4 warning 程序警告
##5 notice 重要信息的普通日志,正常日志
##6 info 普通信息
##7 debug 程序报错信息
journalctl -F PRIORITY ##查看可控日志级别
journalctl -u sshd ##指定查看服务如sshd
journalctl --disk-usage ##查看日志大小
journalctl --vacuum-size=1G ##设定日志存放大小,一共用了多少硬盘来存储日志
journalctl --vacuum-time=1W ##日志在系统中最长存放时间
journalctl -f ##监控日志,生成一封显示查看一封
journalctl _PID=893 ##查看关于PID=893的日志
在这个实验前,我们先对上一章讲到的sshd配置文件做一个修改
vim /etc/ssh/sshd_config
#将文件中的第一行的注释符合去掉,就是故意让它出错,之后记得恢复文件。
systemctl restart sshd
1、journal命令
2、journalctl -n 3 显示日志最新3条
3、 journalctl --since 和 --until可以单独也可以一起用 显示从某时间到某时间的日志
4、journalctl -o ##设定日志的显示方式
short 标准经典模式显示日志
verbose 显示日志的全部字节
5、journalctl -p
0 emerg 系统的严重问题日志
1 alert 系统中立即要更改的信息
2 crit 严重级别会导致系统软件不能正常工作,有些硬件没有导致软件不正常
3 err 程序报错
4 warning 程序警告
5 notice 重要信息的普通日志,正常日志
6 info 普通信息
7 debug 程序报错信息
下图里的报错信息是修改sshd_config文件的原因
6、journalctl -F PRIORITY #查看可控日志级别
7、journalctl -u sshd ##查看指定服务
8、journalctl --disk usage ##查看日志大小
journalctl --vacuum-size=1G ##设定日志存放大小
journalctl --vacuum-time=1w ##设定日志在系统中最长存放一周
journalctl -f ##监控日志,生成一封显示一封查看一封
### 9、journalctl _PID=3003 ##查看PID为3003的日志
查询sshd服务的状态查询到进程的PID为3003
在用命令查询3003的日志,从日志中的报错可以看到错误出现在修改/etc/ssh/sshd_config文件的第一行,做完实验后我们把文件修改回来
2、用journald服务永久存放日志
- 系统默认日志是存放在 /run/log/journal 中
- 默认方式在重启系统后日志会被清理
先用mkdir 建立存储日志的目录
再用chgrp 将文件的组更改为systemd-journal
chmod 2775 保证目录新出现的文件也属于这个组
重启服务后可以看到日志存放的路径已经改变到/var/log/journal
完成上面操作后,重启系统可以看到日志被保存下来
二、rsyslog
rsyslog是采集日志
服务名称:rsyslog.service
配置文件:/etc/rsyslog.conf
日志存放:
文件 | 内容 |
---|---|
/var/log/messages | 系统服务日志,常规信息,服务报错 |
/var/log/secure | 系统认证信息日志 |
/var/log/maillog | 系统邮件日志信息 |
/var/log/cron | 系统定时任务信息 |
/var/log/boot.log | 系统启动日志信息 |
我们可以先清空系统服务日志messages文件,重启一下sshd服务,再查看系统服务日志有没有记录重启sshd服务。
然后关掉rsyslog服务,再重复上面的操作,就不会采集系统服务日志了
1、自定义日志采集路径
vim /etc/rsyslog.conf
#把系统中所有级别的日志存放到westos中
重启rsyslog服务后可以看到生成的westos文件
在200主机先清空之前的日志,之后在100主机登录200主机
在200主机上能查看到日志信息
#把系统中所有级别的日志存放到westos中,但认证服务不存放
2、监控其他主机的日志(日志同步)
实验需要两台主机分别为发送方和接收方
1、发送方为200主机
vim /etc/rsyslog.conf
编辑内容:1、19和20行去掉注释
2、47行添加内容*.*; @172.25.254.100
修改文件后重启服务
systemctl restart rsyslog.service
2、接收方为100主机
vim /etc/rsyslog.conf
编辑内容:19和20行去掉注释
修改文件后i重启服务并关闭接收方防火墙
systemctl restart rsyslog.service
systemctl stop firewalld.service
3、将两个主机的系统服务日志文件都清空,即/ var / log / messages文件
> /var/log/messages
4、在发送方200执行logger命令发送westos test
在两个主机的系统服务日志都可以看到记录
3、更改日志采集格式
日志采集格式指令:
指令 | 作用 |
---|---|
%FROMHOST-IP% | 显示日志来源主机 IP |
%timegenerated% | 显示日志生成时间 |
%syslogtag% | 显示日志生成服务 |
%msg% | 显示日志内容 |
\n | 换行符 |
设定日志采集格式
在接收方100上设定格式
vim /etc/rsyslog.conf
编辑内容:34行 $template WESTOS"%FROMHOST-IP\n%
设置采集格式WESTOS,指定显示日志来源主机ip并添加换行符
47行 *.。。。 /var/log/messages;WESTOS
指定日志采集格式为WESTOS
每次修改文件后都要重启rsyslog.service
systemctl restart rsyslog.service
在200发送端发送 test
[root@westoslinux200 ~]# logger test
能在100接收端查看到,即日志的最后一条来源是200主机
注:设置采集格式可以添加多个指令,每个指令之间空格隔开
也可以将我们自己设定的采集格式设置为默认格式
vim /etc/rsyslog.conf
修改第33行,就默认格式改为WESTOS格式
三、timedatectl
其中:
当前时间 Local time CST
世界时间 Universal time UTC
硬件时间RTC time
时区 Time zone
System clock synchronized: no当前时间是否和别人同步过
NTP service: inactive 时间同步服务是否激活
RTC in local TZ: no 本地时间是否作为硬件时间
1)设定系统时间
timedatectl set-time ”time"
需要关闭时间同步服务,否则设定失败
2)设定系统时区
timedatectl list-timezones ##显示系统的所有时区
把列表里的第一个地区设置为系统时区
timedatectl set-timezone “Asia/Shanghai”##实验后时区还是改为上海
3)设定系统时间计算方式
timedatectl set-local-rtc 0|1##0表示使用utc时间计算方式,默认为0,不用改动
实现时间同步
100主机之前已经重新设置系统时间了,现在想让200主机与100时间同步
在100主机上
vim /etc/chrony.conf
允许所有网络的主机与100同步
计时器等级为10
修改后关闭100火墙并重启时间同步服务
systemctl restart chronyd.service
在200主机上
vim /etc/chrony.conf
修改后重启时间同步服务
可以看到200主机的时间同步了100主机
用chronyc source -v 可以查看到时间同步源为100主机