RECH8.0版本学习 days 7

分析和存储日志

redhat企业Linux中建了一个基于syslog协议的标准日志记录系统。systemd-journald 和rsyslog服务处理RedhatLinux8中的syslog的消息。

systemd-journald服务是操作系统时间日志架构的核心。它收集包括内核、引导过程早期阶段的输出、守护进程启动和运行时的标准输出以及标准错误、syslog事件。

rsyslog服务从日志中读取systemd-journald收到的syslog消息对齐进行排序,并将它们存贮在/var/log目录(系统重启后不保留)中。这些日志是人类可读的消息。

系统日志文件:

日志文件 存储的消息类型
/var/log/messages 大多数系统日志消息记录在此处。例外包括与身份验证、电子邮件处理和调度作业执行相关的消息以及纯粹与调试相关的消息。
/var/log/secure 与安全性和身份验证事件相关的syslog消息。
/var/log/maillog 与邮件服务器相关的syslog消息。
/var/log/cron 与调度作业执行相关的syslog消息。
/var/log/boot.log 与系统启动相关的非syslog控制台消息。

有些应用不使用syslog管理他们的日志消息,通常会放在/var/log的某一子目录中。如apache web server。

syslog优先级概述:

代码 优先级 严重性
0 emerg 系统不可用
1 alert 必须立即采取措施
2 crit 临界情况
3 err 非严重错误情况
4 warning 警告情况
5 notice 正常但重要的事件
6 info 信息性事件
7 debug 调式级别信息。

rsyslog服务使用日志消息的设备和优先级来确定如何进行处理。其配置规则位于/etc/rsyslog.con文件和/etc/rsyslog.d目录中扩展名为.conf的任何文件。

每个控制这syslog消息排序方式的规则都对应了其中一个配置文件中的一行。

日志文件轮转

logrotate工具会轮转日志文件,以防止他们在含有/var/log目录的文件系统中占用太多空间。轮转日志文件时,使用指示轮转日期的扩展名对其重命名。如在2019-01-30轮转,/var/log/messages文件可能会变成/var/log/messages-20190130。轮转若干次(通常在四周之后),丢弃最旧的日志文件以释放磁盘空间。

分析syslog条目

rsyslog服务在日志文件中记录条目时采用一种标准的格式。/var/log/secure日志文件中的日志消息:

利用tail监控日志文件

监控事件的一个或多个日志文件有助于问题的重现。tail -f /path/to/file

命令输出指定文件的最后10行,并在新行写入到文件时继续输出他们。如:tail  -f  /var/log/secure

手动发送syslog消息

logger命令可以发送消息到rsyslog服务。默认情况下,它将优先级为notice的消息发送给user设备,除非通过-p选项另有指定。

向rsyslog服务发送消息并记录在/var/log/boot.log日志文件中,logger命令如下:

logger -p  local7.notice “Log entry created on host”

查看系统日志条目

systemd-kournald服务将日志数据存储在带有索引的结构化二进制文件中,该文件称为日志。在RedhatLinux8中,默认情况/run/log目录用于存储系统日志。/run/log的内容在系统重启后将被清除。要从日志中检索日志消息,使用journalctl命令。journalctl命令突出显示重要的日志消息:优先级为notice或warning的消息显示为粗体文本,而优先级为error或以上的消息显示为红色文本。默认情况下,journalctl -n 显示最后10个条目,如果要显示最后5个条目,可以用journalctl -n 5。

journalctl -p可以接受优先级的名称或编号作为参数,并显示该优先级以及以上的日志条目。

journalctl -f 命令输出系统日志的最后10行,并在新日志条目写入到日志中继续输出他们。退出本进程用ctrl + c组合键。journalctl命令可以理解debug、info、notice、warning、err、crit、alert和emerg优先级。如,列出优先级为err或以上的日志条目:

journalctl -p err

journalctl命令有2个选项,分别是--since和--until,他们可以将输出限制为特定的时间范围。2个选项都采用格式为“YYYY-MM-DDhh:mm:ss”的时间参数。如果省略日期,默认为当天;省略时间,则命令假定为自00:00:00起的一整天。这2个选项还接受yesterday、today和tomorrow作为有效的参数。

实例:journalctl命令列出今天记录中的所有日志条目:

journalctl  --since today

列出范围从2019-02-10 20:30:00到2019-02-13 12:00:00的所有日志条目。

journalctl  --since  “2019-02-10  20:30:00”  --until “2019-02-13 12:00:00”

指定相对于当前的某个时间以后的所有条目,如指定上一小时的所有条目。命令如下:

journalctl  --since  “-1 hour”

日志条目中还附带了只有在大开详细输出时才能看到的字段。如:

journalctl  -o verbose 

保留系统日志

永久存储系统日志

默认情况下,系统日志保存在/run/log/journal目录中,这意味着系统重启这些日志会被清除。可以在/etc/systemd/journald.conf文件中更改systemd-journald服务的配置设置,使日志在系统重启后可以保留下来。

/etc/systemd/journald.conf文件中的storage参数决定系统日志以易失性方式存储,还是系统重启后持久保留。

storage参数可以设置为:

persistent:将日志存储在/var/log/journal目录中,这可以在系统重启后持久保留。若/var/log/journal目录不存在,systemd-journald服务会创建它。

volatile:将日志存储在易失性/run/log/journal目录中。日志不会在系统重启后持久保留。

auto:rsyslog决定要使用持久存储还是易失性存储。如果/var/loh/journal目录存在,那么rsyslog会使用持久存储,否则使用易失性存储。此参数为默认参数。

默认情况,日志的大小不能超过文件系统的10%,也不能造成文件系统的可用空间低于15%。可在/etc/systemd/journald.conf中为运行时和持久日志调整这些值。

journalctl -b 将输出限制为特定的系统启动,如,仅检索第一次系统启动的条目:

journalctl 命令检索第二次系统启动的条目:

journalctl -b 仅检索当前系统启动的条目。

维护准确的时间

设置本地时钟和时区

网络时间协议(NTP)是计算机用于通过互联网提供并获取正确时间信息的一种标准方法。timedatectl命令简要显示当前的时间相关的系统设置,如系统的当前时间、时区和NTP同步设置。

系统提供了包含时区的数据库,可通过timedatectl list-timezones命令列出。

tzselect命令识别正确的zoneinfo时区名称。本命令不包括UTC(协调世界时)时区的名称,使用timedatectl set-timezone UTC命令可将系统的当前时区设置为UTC。

root用户可以使用timedatectl set-timezone命令更改系统设置来更新当前时区。示例:

将当前时区更改为America/Phoenix。

timedatectl -setime 更改系统的当前时间,格式为“YYYY-MM-DD  hh:mm:ss”格式指定。示例:

timedatectl set-ntp命令可启用或禁用NTP同步(自动调整时间),该选项需要true(打开)或false(关闭)参数。示例:

打开NTP同步   timedatectl set-ntp true。

配置和监控CHRONYD服务

chronyd服务通过与配置的NTP服务器进行同步,使通常不准确的本地硬件时钟(RTC)保存正确运行。如没有可用的网络连接,chronyd将计算RTC时钟漂移,记录在/etc/chrony.conf配置文件指定的dirftfile变量中。默认情况下,chronyd服务使用NTP Pool Project的服务器同步时间,不需要额外的配置。参考时钟是stratum 0 时间源。与之直接关联的NTP服务器是stratum 1, 而与该NTP服务器同步时间的计算机则是stratum 2时间源。

/etc/chrony.conf配置文件中配置两种时间源类别。server 比本地NTP服务器高一个级别,peer属于同一个级别。 本配置文件中,server classroom.example.com  iburst 行会使chrony 服务使用classroom.example.com NTP时间源。

chrony  sources 命令验证本地系统是否使用NTP服务器无缝同步系统时钟。如需获取包含额外说的更详细输出,使用-v选项。 示例;

S(源状态)字段中的*字符表示classroom.example.com服务器已被用作时间源,是计算机当前与之同步的NTP服务器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章