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

日志轮询:
image

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

二、时间的设置:

image

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

即可
posted @ 2023-03-02 09:39  MRgx  阅读(577)  评论(0编辑  收藏  举报