今天在腾讯云大学网站闲逛,发现了一个“从传统运维到云运维”的课程,较为系统化的,可以打包自己的零散化知识,构建系统化思维能力。于是笔者针对其中的章节“分析和存储日志”,将视频中重要信息摘抄下来以供学习,并在腾讯云轻量应用服务器上学习、测试、验证。
1、日志系统架构
内建基于日志系统标准协议的日志记录系统,有两个服务负责。
systemd-journald是红帽7新引进的日志收集系统,systemd-journald守护进程提供一种改进的日志管理服务,可以来自内核、启动过程的早期阶段、标准输出、系统日志,以及守护进程启动和运行阶段的错误信息。
rsyslog是syslog的加强版,处理能力强于syslog,rsyslogd服务随后根据数据类型或者设备类型和优先级排列系统日志服务,将它们写到/var/log目录的永久性文件中。
2、系统日志文件
/var/log/messages :大部分系统日志
/var/log/secure :身份验证、相关安全日志
/var/log/maillog :邮件相关信息
/var/log/cron :计划任务相关信息、系统时间等
/var/log/boot.log:启动过程中产生的日志
3、日志文件优先级
许多程序使用syslog协议将时间记录到系统,每一个日志消息根据设备(消息类型)和优先级(消息的严重性)分类。可用的设备在rsyslog.conf(5)中有概述。
优先级概述:
编码0 emerg 系统不可用
编码1 alert 必须立即采取措施
编码2 crit 严重状况
编码3 err 非常严重错误状况
编码4 warning 警告状况
编码5 notice 正常但重要事件
编码6 info 信息性事件
编码7 debug 调试级别信息
4、日志系统配置
rsyslogd服务使用日志的设备和优先级来确定如何进行处理,通过/etc/rsyslog.conf以及/etc/rsyslog.d目录下的*.conf文件进行配置。/etc/rsyslog.d目录下的文件可用自定义,更改配置而不被rsyslog所覆盖。
/etc/rsyslog.conf中RULES中定义了规则。左侧表示与指令匹配的日志消息的设备和严重性,*为通配符,右侧是日志消息存放的文件。
比如*.info;mail.none;authpriv.none;cron.none 会存放在 /var/log/messages 中。 *.emerg :omusrmsg:* 的意思是 Everybody gets emergency messages,发送使用消息给所有登陆的用户。
5、日志文件轮转
日志通过logrotate实用工具进行“轮转”,防止将文件系统填满。
轮转日志时会使用名称扩展对其进行重命名,原文件轮转后会创建新的日志文件,并通知对它进行日志写操作 。轮转若干次(通常四次)丢弃原日志文件以释放磁盘空间。cron计划任务每日运行一次logrotate程序,以查看是否有日志需要轮转,大多数日志文件每周轮转一次,轮转速度有快有慢,或者达到特定大小时轮转。
6、查看系统日志条目
tail /var/log/messages 查看最后十条, tail -f 可以实时查看最后的十条。
可以使用logger命令发送系统日志。logger将消息发送到rsyslog服务,默认严重性为notice(user.notice)的消息发送,除非通过-p(priority)另外指定。
logger -p user.notice hello world!
7、查看systemd日志条目
systemd日志将日志数据存储在带有索引的结构化二进制文件中,此数据包包含与日志事件相关的额外信息,如原始消息的设备和优先级。 红帽7的systemd日志默认存储在/run/log目录中,其内容将在重启后清除。
二进制文件可以通过journalctl查找事件。
journalctl:以less的形式从最旧的日志条目显示完整的系统日志;
journalctl -n number:显示最后number条日志;
journalctl -p err :根据日志优先级过滤日志条目;
journalctl -f :持续动态输出最后十行;
journalctl --since today:今天的日志;
journalctl --since "2021-5-1 20:00:00 --until "2021-5-1 21:00:00" :读取时间段的日志条目。
journalctl -o verbose:显示日志的详细信息
同时,可以通过日志的详细信息中的特定的信息来搜索日志条目,比如:
journalctl _PID=1234 :根据PID号搜索日志;
journalctl _UID=1234 :根据用户UID号搜索日志;
8、日志持久化保存
上面讲过红帽7的systemd日志默认存储在/run/log目录中,其内容将在重启后清除。但是在红帽8中,日志在/var/log/journal中,可以永久保存日志。
即便是永久保存,并非所有数据都永久保存,该日志有内置的日志轮换机制,会在每月触发。配置文件在/etc/systemd/journald.conf ,默认情况下日志的大小不超过文件系统的10%,也不造成文件系统的可用空间小于15% 。
9、保持系统时间准确
保持准确的时间同步和时区设置,确保日志系统中的时间戳准确。
网络事件协议NTP,通过互联网保持时间同步。
timedatectl显示时间相关的系统设置。
timedatectl list-timezones列出所有时区。
timedatectl set-timezones + 时区来设置时区。
timedatectl set-time + 时间来设置时间。
timedatectl set-ntp true 启用ntp
timedatectl set-ntp false 禁用ntp
chronyd服务配置客服端与NTP服务器同步。默认情况下chrond使用NTP pool project服务器池,不需要额外配置。但是孤立网络中的服务器时,需要配置,更改/etc/chrond.conf配置文件。
PowerDesigner如何建立组织架构模型-建立组织架构模型的方法