20、系统日志和时间设置
一、系统日志:
systemd-journald服务
是操作系统事件日志的架构的核心
收集来自包括内核,早期引导阶段,进程启动,运行时的标准输出和错误输出,以及syslog事件等
保存在二进制的日志文件中,但是重启后不保存
rsyslog服务
rsyslog对syslog消息进行排序,并写入日志文件中 (/var/log/)
rsyslog会根据每条消息的类型以及优先级,将日志消息写到特定的日志文件
重启后依然保存
系统日志文件
系统日志文件保存在/var/log/下面,下面是一些重要的日志文件:
/var/log/messages 大多数系统日志消息记录在此处,包括记录服务信息,系统报错信息等。
/var/log/secure 与安全性和身份验证相关的日志。
/var/log/cron 与定时任务执行相关的日志
/var/log/maillog 与系统中邮件服务日志
/var/log/boot.log 与系统启动相关日志
rsyslog服务管理:
配置文件: /etc/rsyslog.conf和/etc/rsyslog.d/*.conf
优先级 代码 严重性
none 无 不记录任何信息
emerg 0 内核崩溃等严重信息
alert 1 需要立刻修改的信息
crit 2 严重错误级别
err 3 错误级别
warning 4 警告级别
notice 5 具有重要性的普通条件的信息
info 6 一般信息的日志,最常用
debug 7 调试级别消息
自定义日志规则
日志定义格式: facility.priority Target
举例:
mail.info /var/log/maillog: 比指定级别更高的日志级别,包括指定级别自身,保存到/var/log/maillog中
mail.=info /var/log/maillog: 明确指定日志级别为info,保存至/var/log/maillog
mail.!info /var/log/maillog: 除了指定的日志级别(info)所有日志级别信息,保存至/var/log/maillog
*.info /var/log/maillog :所有类型的info级别,保存至/var/log/maillog
mail.* /var/log/maillog: mail的所有日志级别信息,都保存至/Var/log/maillog。
mail.notice;news.info /var/log/maillog: mail的notice以上记得日志级别和news的info以上的级别保存至/var/log/maillog
mail,news.crit -/var/log/maillog: mail和news的crit以上的日志级别保存/var/log/maillog中;“-”代表异步模式
-------------------------------------------------------------------------------------------
facility: 设施,从功能或程序上对日志进行分类,并由专门的工具负责记录日志
常用的facility:
lpr:打印相关的日志 auth:认证相关的日志 user:用户相关的日志
cron:计划任务相关的日志 kern:内核相关的日志 mail:邮件相关的日志
daemon:系统服务相关的日志 authpri:授权相关的日志
security:安全相关的日志 local0-local7:自定义相关的日志信息(自定义时可以使用通配符)
手动发送syslog:
Logger命令可以发送消息到rsyslog服务,默认情况下,它的优先级为notice
常用选项:
-p: 指定输入消息的优先级,格式为为“facility.level"
-t: 指定标记记录
-i: 在每行都记录进程ID
logger -i -t mail -p mail.info "fy"
tail -f /var/log/maillog
logger -i -t mail -p mail.info "fy"
实现日志服务器收集日志:
rsyslog是一个C/S架构,可以基于TCP和UDP工作,默认的监听端口是514
服务端:
1、把UDP或者tcp对应的端口打开
module(load="imudp")
input(type="imudp!port="514")
module(load="imtcp")
input(type="imtcp" port="514")
2、systemctl restart rsyslog.service 重启服务
3、 systemctl stop firewalld.service 关闭防火墙
systemctl disable firewalld.service
客户端:
1、修改配置文件/etc/rsyslog.conf
*.info @192.168.186.132 通过UDP转发日志消息
*.info @@192.168.186.132 通过tcp转发日志消息
2、重启服务 systemctl restart rsyslog.service
3、测试
客户端: logger -i -t mail -p mail.info "fy"
服务端:tail -f /var/log/maillog
日志轮询:
logrotate工具会轮循日志文件,防止日志文件占用过多的系统空间
轮循日志文件时,会使用日期作为文件的扩展名对其重命名
配置文件为: /etc/logrotate.con和/etc/logrotate.d/*
首先配置轮询对象,也就是日志收集文件,再配置对于轮询规则的配置文件,再强制轮询生成对应日期的文件查看
例子:
cd /etc/logrotate.d/ 日志轮询的配置文件创建
cp bootlog fuck copy来boot的模板
vim fuck 修改路径指向要操作的文件
/var/log/fuck.log
{
missingok
daily
copytruncate
rotate 7
notifempty
}
再去 vim /etc/rsyslog.conf 中添加
*.info /var/log/fuck.log
logrotate -f /etc/logrotate.conf 强制开始轮询,不等下一次轮询规则触发
系统日志:
systemd-journald服务将收集到的日志消息存储在/run/log下面,/run/log下面的内容在系统重启后将被清除
Journalctl命令突出显示重要的日志消息:优先级为notice或warning的消息显示为粗体文本,优先级为error或以上的消息则显示为红色文本
journalctl常用选项:
-n: 指定显示末尾几条消息,默认是最后10条日志消息
-f:与tail-f命今相似,ctrl+c退出显示
-p:指定显示某个优先级以上的日志
--since,--until: 限制特定的时间段,时间格式为“YYYY-MM-DD hh:mmss”或者yesterday,todaytommorow这样的时间参数
-o verbose:查看日志的详细信息
-r参数表示反序输出,(从新到旧)
根据日志的关键字段查询
_PID:进程的PID
_UID: 运行该进程的用户的ID
_SYSTEMD_UNIT:启动该进程的systemd单元
_COMM: 指定命令的名称
_EXE:进程的可执行文件的路径
journalctl -f
journalctl -r
journalctl -p err
journalctl --since 1 hour ago
journalctl -n 10
journalctl --since "2022-12-04 20:00:00" --until "2022-12-09 20:15:00"
journalctl -u httpd.service -u crond.service
journalctl _SYSTEMD_UNIT=sshd.service
journalctl _PID=1082
journalctl _UID=1001
journalctl _COMM=passwd
journalctl _EXE=/usr/bin/passwd
永久保存系统日志:
1、默认情况下,系统日志保存在/run/log/journal目录中,但重启后日志被清除,
可以在/etc/systemd/journald.conf中修改systemd-journald服务的配置
2、/etc/systemd/journald.conf中的storage参数决定系统日志是易失性还是持久性,该参数可以设置为persistent,volatile或auto
persistent: 将日志存储在/ar/log/journal目录中,若该目录不存在,systemd-journald服务会创建它。
volatile: 将日志存储在易失性目录/run/log/journal中,临时保存
auto: 如果/var/log/journal目录存在,那么rsyslog会使用持久存储,否则为易失性存储,否则为易失性存储,此为默认参数。
一般设置为auto 然后按照需求,需要保存就创建文件,即为永久保存;不需要保存,删除文件就是不保存了
注意不要把文件存放在临时易失文件当中
df -Th就能看到对应的 tmpfs字样的临时性易失文件标识
/run/log/journal/891b279220da4e1e8ccf8253353d58bf
二、时间的设置:
timedatectl
timedatectl list-timezones 列出所有的时区
timedatectl set-timezone Asia/Shanghai 设置时区
timedatectl set-time"YYYY-MM-DD HH:MM:SS 修改日期时间 网络时间同步打开就无法设置,可以用date强行改
网络时间配置 (NTP)
同步时间的方式有两种:
1.ntp 网络授时协议 网络时间源
2.chrony 进行时间同步
在RHEL7 及以前,可以使用ntp同步时间,在RHEL8开始ntp被淘汰了,只能使用chrony来同步时间
配置文件: /etc/chrony.conf
修改格式:server ntp时间地址 iburst
配置文件/etc/chrony.conf :
server ntp.aliyun.com iburst 指定上层时间服务器地址
allow 192.168.0.0/16 允许谁向本机同步时间
local stratum 10 即使server指令中时间服务器不可用,也允许将本地时间作为标准时间授时给其它客户端chronyc命令
chronyc sources -v 查看时间同步源状态
chronyc tracking 显示系统时间的参数信息
修改完之后:
systemctl restart chronyd
chronyc sources
重启的时候服务名字是 chronyd
使用的时候是chronyc
一样名字是chrony
本地时间服务器:
把一台设备 的“允许谁向本机同步时间和local stratum 10 ” 配置打开
allow 192.168.0.0/24
再去其他设备上配置
server 服务器ip iburst
即可