0718_Linux基础(11)

378 阅读4分钟

日志

日志文件是重要的系统信息文件,里面记录了很多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件信息、各种服务相关的信息。这些日志文件存放在 /var/log 目录下,一般只能由 root 用户读取。

现在的大多数 Linux 的发行版,都使用 systemd 作为系统启动的第一个进程,而 systemd-journald.service 则用了协助记录(记录在内存中)在开机过程中的所有信息,包括启动服务、服务启动失败等信息。

不过,我们也能够使用 rsyslog 进行日志的持久化,不仅能够存储 systemd-journald.service 所带来的信息,还能够获取到其他不同种类的信息,并放入不同的日志文件中。

常见的日志文件及类型

日志文件存储的消息类型
/var/log/messages大多数系统日志消息记录在此
/var/log/secure与安全性和身份验证事件相关的 syslog 消息
/var/log/maillog与邮件服务器相关的 syslog 消息
/var/log/corn与调度作业执行相关的 syslog 消息
`/var/log/boot.log与系统启动相关的非 syslog 控制台消息

Syslog 优先级

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

以前有 syslog 进行日志的存储,现在有 rsyslog(进化版) 进行日志的处理,对应的配置文件在 /etc/rsyslog.conf 文件 和 /etc/rsyslog.d 目录

syslog 配置文件示例

# Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
$OmitLocalLogging on

# File to store the position in the journal
$IMJournalStateFile imjournal.state

#### RULES ####

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog


# Log cron stuff
cron.*                                                  /var/log/cron

# Everybody gets emergency messages
*.emerg                                                 :omusrmsg:*

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

日志文件轮转

要知道系统每天都在运行那么肯定每天都会产生大量的日志,而硬盘的空间是有限的,所以我们一般都会删除旧日志。那么 logrotate 这个工具就非常有效了。,它在轮转日志文件时,会指示轮转日期的扩展名,并对以前的日志文件进行从命令,比如 从 message 变为 message-20210718,经过轮转周期之后,文件会被删除掉。

时区设置与时间同步

使用 timedatectl 命令可以设置相应的时区、时间等一系列的操作。

# root 用户下操作

# 列出所有的时区
timedatectl list-timezones

# 当然也可以使用 tzselect 以交互式的方式查看时区。
tzselect

# 更新时区

timedatectl set-timezone America/Phoenix

chronyd 服务通过与配置的 NTP 服务器进行同步,可以保证大量的机器能够以同样的时间进行运行。为什么需要这样做呢? 因为在很多时候,一套系统不仅仅只是部署在一台机器上,一套系统需要多台机器同时协作,要知道硬件的限制会导致不同的机器对时间的累积误差不同,从而产生不同的时间,这样会很可能导致整个系统不同正常运行。所以需要 NTP 服务器进行同步,哪怕 NTP 服务器自己也有误差,但只要进行同步,那也是整套系统一起有误差,这样保证系统内部时间的一致性,不会影响系统运行。

配置文件在 /etc/chrony.conf

vim /etc/chrony.conf 
# 添加下面这一行
# NTP 服务器的IP或域名
service 177.110.111.101 iburst


# 设置完成后,重启服务

systemctl restart chronyd

# 开启时间同步
timedatectl timedatectl set-ntp yes



# 查看是否开启了时间同步
timedatectl

# 会有一行 System clock synchronized: yes

# 查看是否开启了同步系统时钟

chronyc sources -v

# 如果是 506 Cannot talk to daemon,则没有设置同步

# 下面是成功设置时间同步
#  会显示这样一栏

MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 177.110.111.101        8   6    37    30   +577ns[+2058us] +/- 1027us

其他

Linux上journald, rsyslog,和logrotate的关系

日志轮转

使用logrotate完成日志自动切分并轮转