文章目录
前言
本文学习在Linux中的本地日志管理和多台主机之间的日志管理。
一、基本知识
1、systemd-journald.service服务
服务名称:systemd-journald.service
默认日志存放路径: /run/log
/run/log/journal/e41a2e8b07ec404aa33d3a1e0153a1bb/system.journal
目录的名字是机器码
systemctl status systemd-journald.service查看服务状态
systemctl restart systemd-journald.service重启服务 可用于日志文件被删除时使用,重新出现日志文件但之前的日志消失了
systemctl stop systemd-journald.service 停止服务
2、journalctl命令的用法
[root@localhost ~]# journalctl -n 3 ##日志的最新 3 条
[root@localhost ~]# journalctl --since "2020-11-05 20:10:00" ##显示 20:10:00 后的日志
[root@localhost ~]# journalctl --until "2020-11-05 21:10:00"##显示日志到 21:10:00
[root@localhost ~]# journalctl --since "2020-11-05 20:10:00" --until "2020-11-05 20:20:00"
[root@localhost ~]# journalctl -o short #经典模式显示日志
[root@localhost ~]# journalctl -o verbose #显示日志的全部字节
[root@localhost ~]# journalctl -o export #适合传出和备份的二进制格式
[root@localhost ~]# journalctl -o json #js 格式显示输出
[root@localhost ~]# journalctl -p 0 ## emerg 系统的严重问题日志
[root@localhost ~]# journalctl -p 1 #alert 系统中立即要更改的信息
[root@localhost ~]# journalctl -p 2 #crit 严重级别会导致系统软件不能正常工作
[root@localhost ~]# journalctl -p 3 #error 程序报错
[root@localhost ~]# journalctl -p 4 #warning 程序警告
[root@localhost ~]# journalctl -p 5 #notice 重要信息的普通日志
[root@localhost ~]# journalctl -p 6 #info 普通信息
[root@localhost ~]# journalctl -p 7 #debug 程序拍错信息
[root@localhost ~]# journalctl -F PRIORITY ##查看可控日志级别
[root@localhost ~]# journalctl -u sshd ##指定查看服务
[root@localhost ~]# journalctl --disk-usage ##查看日志大小占用多大的文件系统journ
[root@localhost ~]# journalctl --vacuum-size=1G ##设定日志存放最大为1G
[root@localhost ~]# journalctl --vacuum-time=1W ##日志在系统中最长存放时间为一周,可以使用设置以上两个参数来设置回滚
[root@localhost ~]# journalctl -f ##监控日志 journalctl -f
journalctl _PID=10924 _SYSTEMD_UNIT=sshd.service
3、用 journald 服务永久存放日志
服务名称:systemd-journald.service
系统中默认日志在:/run/log/journal 中,默认方式在系统重启后日志会被清理,要永久保存日志请完成以下操作:
[root@localhost ~]# mkdir /var/log/journal
[root@localhost ~]# ls /var/log/journal
[root@localhost ~]# chgrp systemd-journal /var/log/journal
[root@localhost ~]# chmod 2755 /var/log/journal #g+s,继承所属组
[root@localhost ~]# ls /var/log/journal
[root@localhost ~]# systemctl restart systemd-journald
[root@localhost ~]# ls /var/log/journal
设置完成后发现,重启主机后之前的日志记录是可以看见的。
二、rsyslog:日志的存储位置
服务名称:rsyslog.service
1、日志存储路径
/var/log/messages | 系统服务日志,常规信息,服务报错 |
---|---|
/var/log/secure | 系统认证信息日志 |
/var/log/maillog | 系统邮件日志信息 |
/var/log/cron | 系统定时任务信息 |
/var/log/boot.log | 系统启动日志信息 |
/etc/rsyslog.conf | 配置文件(对于日志进行采集并存放到指定位置) |
使用vim /etc/rsyslog.conf 进入配置文件:
其中:‘* . * ’表示 日志类型.日志级别,后面跟的目录路径为指定的存储路径。
‘* . * ;authpriv.none /var/log/westos’ 表示把系统中所有级别的日志存放到westos中,但是authpriv不存放到westos
带 - 的表示日志全部生成完毕再采集
不带 - 的表示实时采集
日志类型
auth#用户认证
authpriv#服务认证
cron#时间任务
kern#内核类型
mail#邮件
news#系统更新信息
user#用户
日志级别
debug#程序排错信息
info#程序常规运行信息
notice#重要信息的普通日志
waring#程序警告
err#程序报错
crit#严重级别会导致系统软件不能正常工作
alert#系统中立即要更改的信息
emerg#系统的严重问题日志
none #不采集
我们在主配置文件里写将所有类型文件写入westos内:
然后重启rsyslog服务,发现重启服务的日志被写入到了westos中:
2、日志同步
@ 表示使用udp传输日志
@@ 表示使用tcp传输日志
@172.25.254. 100#把本机日志用udp的传输方式发送到172.25.254.100主机
在日志的发送方:
然后重启服务: systemctl restart rsyslog.service
日志的接受方:
将19和20行注释取消
然后在日志接受方重启服务并关闭火墙:
systemctl restart rsyslog.service
systemctl stop firewalld
‘ > /var/log/messages#清空原来日志方便实验
可以看到200主机的日志被发送100主机上:
3、更改日志格式
$template WESTOS, “%FROMHOST-IP% %timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n”
#WESTOS: 格式名称,自定义名称
#%FROMHOST-IP%: 日志来源主机IP
#%timegenerated%: 日志生成时间
#%syslogtag%: 日志生成服务
#%msg%: 日志内容
#\n: 换行
格式应用:
#vim /etc/rsyslog.conf 进入日志配置文件
.;authpriv.none /var/log/westos;WESTOS #在需要改动的日志后面添加WESTOS,改为WESTOS格式,自定义
此时可以看见日志信息按照我们写的格式保存。
3、时间timedatectl
1.timedatectl set-time “2020-02-13 10:41:55”##设定系统时间
设置系统时间时NTP service: inactive ,时间同步inactive才可以,否则要执行systemctl stop chronyd.service关闭时间同步
2.timedatectl list-timezones##显示系统的所有时区
3.timedatectl set-timezone “Asia/Shanghai”##设定系统时区
4.timedatectl set-local-rtc 0|1##设定系统时间计算方式##0表示使用utc时间计算方式,默认为0,不用改动
4、时间同步
#服务名称:chronyd.service
#配置文件:/etc/chrony.conf
用100主机来同步200主机的时间
在100主机上,使用vim /etc/chrony.conf 更改配置文件(别忘了重启服务呦)
systemctl restart chronyd.service
在200主机上,vim /etc/chrony.conf,更改完配置文件后重启服务
使用chronyc sources -v查看是否同步成功:
注意:在时间同步过程中,防火墙服务要关闭!