企业7之前,日志采集工具只有rsylog,而企业7之后日志采集有两个工具:journald和rsyslog。
在Linux7中查看这两个工具。
远程登陆Linux8虚拟机,查看这两个工具。
服务名称:systemd-journald.service
查看日志的程序:journalctl
默认日志存放路径:/run/log/
(该路径中的日志重启服务后自动删除)
日志是由运行程序自己产生的,systemd-journald.service
的作用是按照某种格式采集程序产生的日志,并保存到默认日志路径。
systemd-journald.service
服务无法关闭。
[root@localhost network-scripts]# cd /run/log
[root@localhost log]# ls
journal
journalctl
journalctl -n 3
journalctl --since 时间
journalctl --until 时间
命令:journalctl -o 类型参数
(默认类型参数为short)
类型参数 | 含义 |
---|---|
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
级别0和1与内核相关,不可控制
系统每时每刻都在生成新的日志,为了避免越来越多的日志造成内存浪费,在记录的日志量满足某个条件时,应自动删除最早的日志信息,这就是日志回滚。
临时的日志回滚仅对系统本次运行起作用,系统重启后需要重新设置。
命令:journalctl --vacuum-size=日志存放大小
最大日志存放量
命令:journalctl --vacumm-time=时间
日志最长存放时间
配置文件地址:/etc/systemd/journald.conf
编辑该文件:vim /etc/systemd/journald.conf
命令:journalctl -f
作用:实时显示日志文件的变动、更新。
重启sshd,journalctl -f
的Shell界面自动更新。
[root@localhost ~]# mkdir /var/log/journal ##创建目录
[root@localhost ~]# chgrp systemd-journal /var/log/journal ##改变目录所有组权限
[root@localhost ~]# chmod 2774 /var/log/journal/ ##改变目录使用权限
[root@localhost ~]# ls -ld /var/log/journal/
drwxrwsr--. 2 root systemd-journal 6 Feb 14 22:27 /var/log/journal/
[root@localhost ~]# systemctl restart systemd-journald.service ##重启服务
[root@localhost ~]# ls /var/log/journal/ ##查看硬盘中的日志信息(永久存放日志,新生成的日志文件也存放在这里)
8400f98d40a44352a1bc526eeed38c94
[root@localhost ~]# ls /run/log/ ##查看原目录中的日志信息(空)
#####################################复原日志文件###########################################
[root@localhost ~]# rm -fr /var/log/journal/ ##删除硬盘中的日志目录
[root@localhost ~]# systemctl restart systemd-journald.service ##重启日志服务
[root@localhost ~]# ls /run/log/ ##新生成的日志信息(临时存放,重启后自动删除)
journal
[root@localhost ~]# ls /run/log/journal/
8400f98d40a44352a1bc526eeed38c94
如果真的要永久改变日志文件的存放地址:仅需执行到第3步即可。
未修改前执行journalct命令。
修改后执行journalctl命令,日志起始时间不变,说明日志文件已永久保存,文件的保存路径为:/var/log/journal
。
复原后执行journalctl命令,日志起始时间变化,说明重启服务后之前的目录已被自动删除。
服务名称:rsyslog.service
日志存放l路径:(分类存放)
rsyslog服务分门别类的存放日志文件。
journald将所有文件统一存放,再设计命令查找不同类型的日志文件。
rsyslog服务的管理依赖配置文件。
配置文件路径:/etc/rsyslog.conf
在配置文件中自定义各种类型日志文件的存放路径:
[root@localhost ~]# vim /etc/rsyslog.conf
在第55行增加:
日志类型.日志级别 日志存放路径
日志类型参数 | 含义 |
---|---|
auth | 用户认证日志文件 |
authpriv | 服务认证日志文件 |
cron | 时间任务日志 |
kern | 内核相关日志 |
邮件日志 | |
news | 系统更新信息 |
user | 用户相关日志 |
上图表示把系统中所有类型、所有级别的日志文件存放到指定路径/var/log/file
。
重启rsyslog.service服务后查看该路径下的日志文件。
[root@localhost ~]# rm -f /var/log/file
[root@localhost ~]# vim /etc/rsyslog.conf
上图将所有级别的服务认证相关的日志文件存放到指定路径/var/log/file
。
重启rsyslog.service服务后查看该路径下的日志文件。
日志级别参数 | 含义 |
---|---|
emerg | 系统的严重问题日志(内核错误) |
alert | 系统中立即要更改的信息 |
crit | 严重级别日志,影响软件正常工作 |
err | 程序报错日志 |
warning | 程序警告日志 |
notice | 重要信息的普通日志 |
info | 普通信息日志 |
debug | 排错信息日志 |
none | 排除某个级别的日志文件 |
将配置文件按上图修改后,重启rsyslog.service服务。
准备两台虚拟机,我将Linucx7作为本地主机,Linux8作为远程主机。要求Linux8的日志要发送到Linux7的虚拟机中。
[root@localhost ~]# systemctl stop firewalld
设置Linux7的配置文件,使其接收同一网段中所有人的日志
配置文件地址:/etc/rsyslog.conf
[root@localhost ~]# systemctl restart rsyslog.service ##重启服务
[root@localhost ~]# netstat -antlupe | grep rsyslog ##查询端口
udp 0 0 0.0.0.0:514 0.0.0.0:* 0 267324 72749/rsyslogd
udp6 0 0 :::514 :::* 0 267325 72749/rsyslogd
设置Linux8的配置文件,使其能够发送日志到远程主机
[root@localhost ~]# vim /etc/rsyslog.conf
@
表示使用UDP协议传输日志
@@
表示使用TCP协议传输日志
@192.168.224.131
表示将本地日志用UDP协议发送给远程主机
[root@localhost ~]# systemctl restart rsyslog.service #重启Linux8的服务
[root@localhost ~]# > /var/log/messages #Linux7和Linux8均执行此命令,清空日志文件
[root@localhost ~]# logger wuhan fighting!!! ##添加测试日志
logger wuhan fighting> /var/log/messages!
[root@localhost ~]# cat /var/log/messages ##查看Linux8的日志文件日志文件
Feb 15 02:12:31 localhost root[14166]: wuhan fighting
命令:timedatectl set-local-rtc 0|1
执行timedatectl set-local-rtc 0
,系统时间(RTC)= UTC,设置后系统的硬件时间与UTC相同。
执行timedatectl set-local-rtc 1
,系统时间(RTC)= Local time,设置后系统的硬件时间与当地时间相同。
模拟时间同步服务时,为了避免影响到同一网段的其它主机,采用VMWare中的仅主机模式下建立局域网。
服务名称:chronyd.service
配置文件:/etc/chrony.conf
[root@localhost ~]# systemctl restart chronyd.service
[root@localhost ~]# systemctl stop firewalld
一般在新建一个虚拟机时,将其时区设置为中国上海,这样就会使系统时间与当前真实时间相差8小时。
原因是:我们在安装系统的时选择的时区是上海,而Linux操作系统默认bios时间是utc时间,所以时间相差了8小时。这个时候的bios的时间和系统的时间是不一致的,一个代表 utc 时间,一个代表cst(+8时区),即上海时间。
要令此时系统的时间为真实时间,需对时间进行同步:
删除localtime即可。