日志
日志文件是重要的系统信息文件,里面记录了很多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件信息、各种服务相关的信息。这些日志文件存放在 /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 优先级
| 代码 | 优先级 | 严重性 |
|---|---|---|
| 0 | emerg | 系统不可用 |
| 1 | alert | 必须立即采取措施 |
| 2 | crit | 临界情况 |
| 3 | err | 非严重错误状况 |
| 4 | warning | 警告情况 |
| 5 | notice | 正常但重要的消息 |
| 6 | info | 信息性消息 |
| 7 | debug | 调试级别消息 |
以前有 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