首页 > 技术文章 > RHEL之(二)Red Hat Linux 日志管理

zylSec 2021-04-05 14:20 原文

日志管理

一、概念

1)在RHEL系统中,日志是通过什么协议记录的呢? Syslog

2)记录服务有关、开机引导有关的日志,服务在运行时候才有有关的日志:Systemd-journald.service

3)如何保存:以二进制文件的形式保存在内存,如果系统被重启以后,systemd-journald.service保存的日志就没有了。

4)把systemd-journald.service 保存的二进制内容,转换成文本文档,并且会保存在/var/log中:rsyslog.service

 

二、日志分类

 

/var/log/secure: 一般和登陆有关,例如SSH远程连接,本地登陆等。

/var/log/boot.log: 系统启动时启动的服务和组件等。

 

 

 

三、日志的格式:

Jul  4 05:14:36 : 时间。指记录/产生这条日志的时间

Servera:产生这天日志的对象(rsyslog可以记录远程主机的日志)

sshd[22895]:这个日志是通过哪个服务产生的

Accepted…… : 具体的日志事件

 

服务类型的日志(如httpd服务的日志)

对于特定的服务日志格式,在服务的配置文件会定义好保存的日志

格式:。例如在/etc/httpd/conf.d/httpd.conf中有格式定义:

 

 

 

Tips在配置文件中输入/LogFormat”可以快速定位到该行,日志格式的定义以通配符表示。

 

Tips当使用Linux查看日志时,可以根据以下两种情况:

A、当需要查看某种具体的服务时:

   了解该服务的配置文件中,关于日志的定义路径,以及日志格式。

B、当需要查看普通的系统相关日志以及服务的简略日志:

   方法一:查看/var/log路径下的日志(以上已给出)

   方法二:使用命令systemctl status xxx(服务名)

C、更多的场景下是通过专门的记录日志的方式: ELK (不进行详细的介绍) 

 

四、日志的级别:

日志中的告警信息是分级别的,分为8个等级:

 

Tips:告警的级别数值越小,说明优先级越高,紧急的程度也越高。当出现emerg的告警信息时,系统基本会死机状态。一般来说,我们只重点处理0~3的告警

 

rsyslog.conf中,可以配置将不同的告警信息放在指定的文件中(分门别类的存放):/etc/rsyslog.conf

 

 

 

 

 

 

解读:

A、

authpriv.*        /var/log/secure

凡是与登陆验证相关的告警信息都存放在var/log/secure中。

 

B、

*.info;mail.none;authpriv.none;cron.none  /var/log/messages

所有的信息,除了与邮件,登陆验证,作业调度相关的告警外,都存放在/var/log/messages中。

 

C、

*.emerg              :omusrmsg:*

针对所有的emerge信息,都会立即显示在所有的终端上。

:omusrmsg:*   所有的终端(屏幕上)

 

日志的级别:日志的文件内容及日志的定义方式

 

 

 

local7.* :日志设备

首先有服务记录日志到特定的local设备,然后在通过rsyslog存

储到特定的文件

local0 ~ local7 保留给本机用户使用

local7:日志的最高级别为7。


举几个例子:
(1)在/etc/rsyslog.conf中增加如下配置后重启rsyslog服务
local2.info           /var/log/test.log
执行命令
[root@localhost ~]# logger -p local2.info "hello world"
查看 /var/log/test.log
[root@localhost ~]# tail /var/log/test.log             
Nov 18 22:36:30 localhost root: hello world
Tips: logger命令-p参数含义:  -p, --priority priority_level
     指定输入消息的优先级,优先级可以是数字或者指定为 " facility.level" 的格式。比如:" -p local3.info " local3 这个设备的消息级别为 info。默认级别是 "user.notice"

(2)如果是使用rsyslog开源代码进行开发,可以设置日志的facility类型为local0,对应的rsyslog服务器配置local0日志类型的处理

(3)另外如果是路由设备,比如华为设备,可以对log进行配置:
info-center loghost 192.168.1.1 facility local4
这样,在192.168.1.1的rsyslog服务器上配置local4日志类型的处理方式,就可以存储来自路由设备的日志了

 

五、日志的轮替(logrotate)

日志轮替的定义:使用者定义一种日志规则,每当日志满足条件时(日志文件大小,周期等),将会产生(替换)一个新的文件记录日志。

 

  1. 日志的轮替规则

(1)以周期为规则。如每周的周五执行一次轮替

(2)以大小为规则。以日志文件的大小进行轮替,如文件大小达到5M时执行一次轮替。

(3)以上两种方式混合使用来轮替。

 

 

 

日志轮替的配置文件:/etc/logrotate.conf

 

 

 

 

 

 

六、systemd-journald服务

  1. 查看内存日志命令:journalctl

各个常用参数的含义:

-f follow):实时滚动显示最新的日志

 

 

 

-n  查看后面n行的日志

 

 

 

-p  查看指定告警级别的日志

 

 

 

--since --until  指定一个时间段内产生的日志

 

 

 

Tips:如何设置日志的永久存储

1)编辑/etc/systemd/journald.conf

 

 

 

2)设置Storage=persistent

 

 

 

3)重启systemd-journald服务即可生效

systemctl restart systemd-journald

 

 

 

七、时间与时区(timedatectl)

 

 

 

设置时区 set-timezone

 

 

Tips这里是CST是指China Standard Time(中国标准时间)

CST不总是代表中国标准时间

 

配置Chrony(NTP)服务

如果直接使用timedatectl设置时间

 

系统会报错,因为默认使用了NTP(网络时间协议,一种用于使计算机时间同步的协议),所以不可以自行修改时间。

 

所以,要先将NTP功能关闭,然后才可以手动修改时间,操作如下:

 

 

 

NTP功能开启

 

 

 

远程服务器设置(chronyd/ntp)

需求:

配置一台客户端B与另一台服务器A的时间同步(chronyd)

Step 1:在服务器和客户端安装chronyd服务

1)使用dnf在包管理器下载安装chronyd服务

 

 

 

2)安装完成后,启动并启用chrongyd服务,并查看一下服务状态是否显示正在运行:

 

 

 

Step 2:配置chronyd服务器

1)chrony安装完成后,可以在chrony主配置文件/etc/chrony.conf上进行更改配置,配置你想要同步时间的服务器。

   

TipsRHEL7版本及之前,配置文件为ntp.conf 

 

设置最接近你的时间服务器:注释掉第一个pool行并添加NTP服务器列表:

 

 

 

你还可以指定允许访问NTP服务器的IP地址或网络地址block:

 

 

 

更改后重新启动chronyd服务

 

 

 

2)如果有活动的firewalld服务,请允许ntp端口:

firewall-cmd --add-service=ntp --permanent 

firewall-cmd --reload

 

 

 

3)检查NTP服务器是否正常工作:

 

 

 

Step 3:配置chronyd客户端

(1)编辑配置文件以将NTP服务器设置为指向新配置的NTP服务器:

 

更改后重新启动chronyd服务

 

 

 

2)检查NTP服务器是否正常工作:

 

 

 

 

Step 4:验证

配置到了这里,NTP服务器已经在RHEL 8服务器上运行了

 

 

 

 

参考链接

RHEL 8系统上使用Chrony配置NTP服务器

https://ywnz.com/linuxyffq/3920.html

国内常用的NTP服务器地址

https://www.cnblogs.com/jins-note/p/9513385.html

 

推荐阅读