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的日志信息。
LINUX系统日志

注意:为了方便查看日志中产生的内容可以删除/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的状态,显示为**状态
LINUX系统日志
(2)如果关闭rsyslog.service,查看时不会产生日志。因为关闭改服务后,没有程序可以采集日志。当开启服务后,会立即采集之前的日志。

LINUX系统日志
当开启rsyslog服务后,会立刻采集日志。
LINUX系统日志

2.修改日志的采集路径

(1)日志类型

名称 说明
auth pam产生的日志,用户登录的信息认证
authpriv ssh,ftp等登录信息的验证信息
cron 时间任务相关
kern 内核
lpr 打印
mail 邮件
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中
LINUX系统日志
为了测试可以重启任何服务,比如rsyslog.service,目的是为了生成日志。重启后可以发现在westos中已经产生了日志,而在westos1中没有日志生成。
LINUX系统日志为了测试westos1中产生的日志,可以使用远程登录的方式产生日志。比如:ssh [email protected](目标主机ip)可以发现在westos1中产生了登录的日志信息。
LINUX系统日志
3.日志的远程同步

可以使用man 5 rsyslog.conf来查看日志的发送的设置。
本次将node2(172.25.254.85)的日志发送到node1(172.25.254.95)上。
在node2上设置:

vim /etc/rsyslog.conf ##修改rsyslog的配置文件

@表示远程传输使用UDP协议,@后面为目标的ip。
LINUX系统日志

systemctl restart rsyslog.service ##重启服务
/var/log/messages ##清空日志,方便查看
logger test # 测试日志,
cat /var/log/messages ##可以查看发送了test

LINUX系统日志

在node1 上设置:

vim /etc/rsyslog.conf ###开启UDP的接口。

LINUX系统日志

重启rsyslog服务。重启完成后可以查看是否开启了514端口。可以看到在node1上接收到了测试信息test。

netstat -antlupe | grep rsyslog ### 查看是否开启了514端口

LINUX系统日志

注意:在接收方一定要关闭火墙,要不信息传不进来。

4.日志采集格式的设定

命令 说明
%timegenerated% 显示日志时间
%FROMHOST-IP% 显示主机ip
%syslogtag% 日志记录目标
%msg% 日志内容
\n 换行

进入rsyslog的配置文件中。
a. 在指定的日志中采用WESTOS格式,没有指定的采用默认格式
LINUX系统日志
然后在指定日志的路径后面加上【;WESTOS】,重启,就可以看到修改格式的效果。
LINUX系统日志
b.所有的日志格式都采用设置的格式
LINUX系统日志
可以看到所有日志的都采用自己设定的格式。查看的是/var/log/secure。

LINUX系统日志
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行的注释,是为了让改机器作为一个时间服务器来发射时间信息。
LINUX系统日志
重启改服务,一定要关闭火墙。
LINUX系统日志
客户端:
同样修改改配置文件。

LINUX系统日志
修改完成以后重启该服务,使用下面命令可以查看时间是否同步完成。

chronyc sources -v

在产生的结果中:^表示server,*表示已经同步完成。
LINUX系统日志

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之间的日志。
LINUX系统日志
注意:默认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 #可以看到里面有机器码

LINUX系统日志
当机器码生成之后的日志才会被采集到文件中,之前的不会被采集。当计算机重启之后可以发现,之前的日志也不会丢失。可以看到重启之前的时间为18:19,在重启以后,之前的日志也存在。

LINUX系统日志