LINUX系统日志
1.系统日志
(1)系统日志定义
进程和操作系统内核需要能够为发生的事件记录日志,这些日志可用于系统审核和问题的故障排除,一般这些日志永久存储/var/log目录中。
(2)日志的管理
日志文件 | 用途 |
---|---|
/var/log/messages | 大多数系统日志信息记录在此处 |
/var/log/secure | 安全和身份认证相关的信息和错误的日志文件 |
/var/log/maillog | 与邮件服务器相关的日志文件 |
/var/log/cron | 与定时任务相关的日志文件 |
/var/log/boot.log | 与系统启动有关的日志文件 |
(3)日志的采集
rsyslog是一个开源工具,被广泛用于Linux系统以通TCP/UDP协议转发或接收日志消息。此服务是用来采集系统日志的,不产生日志,只是起到采集的作用。rsyslog服务的主配置文件为/etc/rsyslog.conf。
(4)日志的常规操作
a.清空及查看日志
命令 | 功能 |
---|---|
> /etc/log/messages | 清空日志文件messages |
cat /var/log/messages | 查看messages的信息 |
当重启某个服务时,比如sshd.service ,可以在/var/log/messages中查看ssh的日志信息。
注意:为了方便查看日志中产生的内容可以删除/etc/rc.d/rc.local 文件。在shell中输入 > /etc/rc.d/rc.local,然后重启reboot。
b. rsyslog服务的命令
命令 | 功能 |
---|---|
systemctl stop rsyslog.service | 关闭rsyslog服务 |
systemctl status rsyslog.service | 查看rsyslog的状态 |
systemctl start rsyslog.service | 开启rsyslog服务 |
systemctl restart rsyslog.service | 重启rsyslog服务 |
(1)查看rsyslog的状态,显示为**状态
(2)如果关闭rsyslog.service,查看时不会产生日志。因为关闭改服务后,没有程序可以采集日志。当开启服务后,会立即采集之前的日志。
当开启rsyslog服务后,会立刻采集日志。
2.修改日志的采集路径
(1)日志类型
名称 | 说明 |
---|---|
auth | pam产生的日志,用户登录的信息认证 |
authpriv | ssh,ftp等登录信息的验证信息 |
cron | 时间任务相关 |
kern | 内核 |
lpr | 打印 |
邮件 | |
mark(syslog)-rsysylog | 服务内部的信息,时间标识 |
news | 新闻组 |
user | 用户程序产生的相关信息 |
uucp | unix to unix copy,unix主机之间的相关的通讯 |
local 1~7 | 自定义的日志目录 |
(2)日志级别
名称 | 说明 |
---|---|
debug | 有调式信息的,日志信息最多 |
info | 一般信息的日志,最常用 |
notice | 最具有重要性的普通条件的信息 |
warning | 警告级别 |
err | 错误级别,阻止某个功能或者模块不能正常工作的信息 |
crit | 严重级别,阻止整个系统或者整个软件不能正常工作的信息 |
alert | 需要立刻修改的信息 |
emerg | 内核崩溃的等严重记录 |
none | 什么都不记录 |
注意:从上到下,级别从低到高,记录的信息越来越少。详细的可以查看手册:man 3 syslog
(3)测试
日志的格式为:【日志类型.日志级别 存放的路径】
比如:
vim /etc/rsyslog.conf ###编辑rsyslog配置文件
*.*表示任何类型的日志都存放到westos1中,auth.info表示用户的认证信息存放到westos1中
为了测试可以重启任何服务,比如rsyslog.service,目的是为了生成日志。重启后可以发现在westos中已经产生了日志,而在westos1中没有日志生成。为了测试westos1中产生的日志,可以使用远程登录的方式产生日志。比如:ssh [email protected](目标主机ip)可以发现在westos1中产生了登录的日志信息。
3.日志的远程同步
可以使用man 5 rsyslog.conf来查看日志的发送的设置。
本次将node2(172.25.254.85)的日志发送到node1(172.25.254.95)上。
在node2上设置:
vim /etc/rsyslog.conf ##修改rsyslog的配置文件
@表示远程传输使用UDP协议,@后面为目标的ip。
systemctl restart rsyslog.service ##重启服务
/var/log/messages ##清空日志,方便查看
logger test # 测试日志,
cat /var/log/messages ##可以查看发送了test
在node1 上设置:
vim /etc/rsyslog.conf ###开启UDP的接口。
重启rsyslog服务。重启完成后可以查看是否开启了514端口。可以看到在node1上接收到了测试信息test。
netstat -antlupe | grep rsyslog ### 查看是否开启了514端口
注意:在接收方一定要关闭火墙,要不信息传不进来。
4.日志采集格式的设定
命令 | 说明 |
---|---|
%timegenerated% | 显示日志时间 |
%FROMHOST-IP% | 显示主机ip |
%syslogtag% | 日志记录目标 |
%msg% | 日志内容 |
\n | 换行 |
进入rsyslog的配置文件中。
a. 在指定的日志中采用WESTOS格式,没有指定的采用默认格式
然后在指定日志的路径后面加上【;WESTOS】,重启,就可以看到修改格式的效果。
b.所有的日志格式都采用设置的格式
可以看到所有日志的都采用自己设定的格式。查看的是/var/log/secure。
5.时间同步
(1)修改本地时间
命令 | 说明 |
---|---|
timedatectl list-timezones | 列出所有时区 |
timedatectl set-timezone Asia/Shanghai | 修改时区 |
timedatectl set-local-rtc 1 | RTC(硬件时间)使用本地时间:0表示不使用,1表示使用 |
timedatectl set-ntp false | true |
timedatectl set-time “2019-10-19 11:20:05” | 修改时间 |
(2)时间的同步
服务器(相当于一个时间发射器):
vim /etc/chrony.conf # 进入时间的配置文件
修改22行,允许172.25.254网段的所有用户可以使用这个时间服务器,取消29行的注释,是为了让改机器作为一个时间服务器来发射时间信息。
重启改服务,一定要关闭火墙。
客户端:
同样修改改配置文件。
修改完成以后重启该服务,使用下面命令可以查看时间是否同步完成。
chronyc sources -v
在产生的结果中:^表示server,*表示已经同步完成。
6.查看日志
a. journalctl命令
命令 | 说明 |
---|---|
journalctl | 查看日志 |
journalctl -n | 查看最新的10条日志 |
journalctl -n 3 | 查看最新的3条 |
journalctl --since 13:30 | 查看自13:30开始的日志 |
journalctl --since 13:30 --until 13:40 | 查看自13:30到13:40的日志 |
journalctl -o verbose | 查看日志的详细参数信息 |
journalctl -p err | 查看错误日志 |
查看从15:46到15:49之间的日志。
注意:默认systemd-journald是不保存系统日志到硬盘的,那么关机后再次开机只能看到本次开机之后的日志。上次关机之前的日志是无法查看的。
b.把日志采集到硬盘中
mkdir /var/log/journal ##将日志保存到该目录下
chgrp systemd-journal /var/log/journal ##修改/var/log/journal的组为systemd-journal
chmod 2755(g+s)/var/log/journal #将/var/log/journal目录下文件的组都变为systemd-journal
killall -1 systemd-journald ##在进程不被关闭的情况下刷新一次
ls /var/log/journal #可以看到里面有机器码
当机器码生成之后的日志才会被采集到文件中,之前的不会被采集。当计算机重启之后可以发现,之前的日志也不会丢失。可以看到重启之前的时间为18:19,在重启以后,之前的日志也存在。