系统日志结构
系统日志
进程和操作系统内核需要能够为发生的时间记录日志,这些日志可用于系统审核和问题的故障排查,这些日志永久存储在/var/log目录中
/var/log目录中保管由rsyslog维护的各种特定与系统和服务的日志文件
日志文件 | 目的 |
/var/log/messages | 大多数系统日志消息记录在此处 |
/var/log/secure | 安全和身份验证相关的消息和错误的日志文件 |
/var/log/maillog | 与邮件服务器相关消息的日志文件 |
/var/log/cron | 与定期执行任务相关的日志文件 |
/var/log/boot.log | 与系统启动相关的消息记录在此处 |
这里我们使用vim文本编辑器查看/etc/log/messages中的日志文件
查看系统的日志文件
许多程序使用syslog协议将事件记录到系统。每一日志消息根据设备(消息的类型)和优先级(消息的严重性)分类
编码 | 优先级 | 严重性 |
0 | emerg | 系统不可用 |
1 | alert | 必须立即采取措施 |
2 | crit | 严重状况 |
3 | err | 非严重错误状况 |
4 | warning | 警告状况 |
5 | notice | 正常但重要的事件 |
6 | info | 信息性时间 |
7 | debug | 调试级别信息 |
日志的类型 | 说明 |
auth |
pam产生的日志 |
authpriv | ssh,ftp等登陆信息的验证信息 |
cron | 时间任务相关 |
kern | 内核 |
lpr | 打印 |
邮件 | |
mark(syslog)-rsylog | 服务内部的信息,时间标识 |
news | 新闻组 |
user | 用户程序产生的相关信息 |
uucp | unix主机之间相关的通讯 |
local 1~7 | 自定义的日志设备 |
/etc/rsyslog.conf ---- 日志的主配置文件,可修改著配置文件达到修改设备和优先级的效果
日志同步
首先,我们列出日志同步时接受方和发送方各自的职责:
接受方:关闭接受防火墙
修改双端配置文件(udp/tcp)协议相同
重启服务
发送方:填写要发送的目标主机
修改双端配置文件(udp/tcp)协议相同
重启服务
最好清理日志(实验环境)
配置日志发送方:
修改 /etc/rsyslog.conf 中的配置:
可以看到我们这里使用了udp协议(因为使用udp协议速度传输速度快)来进行日志传输,并且填写了我们接受方的ip地址
然后我们重其服务,清理日志,使用logger命令发送日志消息
发送方的配置完成
配置日志接受方:
同样修改 /etc/rsyslog.conf中的配置:
双端的协议要相同,这里同时使用了udp协议
紧接着关闭我们的防火墙 systemctl stop firewalld ---- 关闭主机的火墙
最后重启服务,清理日志
接受方配置完成
最后在接受方查看日志时,我们看到了发送方主机传来的使用logger命令发送的消息,即表明了日志同步成功
日志分析工具journal
systemd日志将日志数据存储在带有索引的二进制文件中,此数据包含与日志事件相关的额外信息
以root用户身份运行时:
journalctl ---- 从最旧的日志条目开始显示完整的系统日志
journalctl -n num ----显示最后num个日志条目,它可接受通过可选参数指定应显示最后多少个日志条目
journalctl -p 优先级 ---- 可以接受已知优先级的名称编号或参数,显示所有指定级别及更高级别的条目
journalctl -f ---- 监控日志,输出日志的最后十行, 并在新日志条目写入到日志中时继续输出它们
journalctl --since time --until time ---- 时间筛选日志,显示指定时间范围内新生成的日志
journalctl _COMM= 命令的名称 ---- 显示指定进程的日志,可以组合多个选项
_EXE= 进程的可执行文件的路径
_PID= 进程的PID
_UID= 运行该进程的用户UID
_SYSTEMD_UNIT= 启动该进程的systemd单元
journalctl -o verbose ---- 显示日志的详细监控参数
修改日志的格式
%timegenerated% ---- 显示日志时间
%FROMHOST-IP% ---- 显示主机ip
%syslogtag% ---- 日志记录目标
%msg% ---- 日志内容
\n ----换行
永久存储系统日志
由于日志保存在电脑的内存中,这意味着系统重启时它会被清楚,所以我们如果要永久存储系统日志的话,需要执行以下的操作:
mkdir /var/log/journal
chgrp systemd-journal /var/log/journal ---- 修改所有组
chmod g+s /var/log/journal ---- 给与gs权限
ps aux |grep systemd-journald ---- 生成的进程都属于该组
killall -1 num ---- num为进程号,-1信号为重新启动
cd /var/log/journal
ls
bootctl
ll 主机号
reboot ---- 重启
journalctl ---- 已经采集到的日志会保存,journalctl命令会自动搜寻到该日志并显示
时间的同步与管理
时间的修改与设置
时间的修改必须使用root用户身份
timedatectl ---- 查看当前时间信息
timedatectl set-time "2018-11-11 11:11:11" ---- 设置当前系统时间
timedatectl list-timezones ---- 查看能够同步时间的时区
timedatectl set-timezone Asia/Shanghai ---- 把系统时间与某个时区同步
timedatectl set-local-rtc 1 ---- 开启硬件时间与CST的同步,在vim /etc/adjtime起作用
timedatectl set-local-rtc 0 ---- 关闭硬件时间与CST的同步,此时将与UTC同步,将在vim /etc/adjtime起作用
时间同步
配置时间发送方:
22 allow 172.25.0.0/24 ---- 允许谁去同步我的时间
28 local stratum 10 ---- 不去同步任何人的时间,时间同步服务器级别
重启服务,关闭防火墙 发送方配置完成
配置时间接受方:
3 server 172.25.254.1 iburst ---- 同步该主机上的时间
重启服务 接受方配置完成
chronyc sources -v ---- 查看时间的同步来源
^*表示正确同步 ^?表示没有正确同步