系统中的日志管理

日志文件对于诊断和解决系统中的问题很有帮助,因为在Linux系统中运行的程序通常会把系统消息和错误消息写入相应的日志文件,这样系统一旦出现问题就会“有据可查”。此外,当主机遭受攻击时,日志文件还可以帮助寻找攻击者留下的痕迹.

日志文件对于诊断和解决系统中的问题很有帮助,因为在Linux系统中运行的程序通常会把系统消息和错误消息写入相应的日志文件,这样系统一旦出现问题就会“有据可查”。此外,当主机遭受攻击时,日志文件还可以帮助寻找攻击者留下的痕迹.

  • 主要日志文件
    在Linux系统中,日志数据主要包括以下三种类型:
    【内核及系统日志】
    【用户日志】
    【程序日志】
    Linux系统本身和大部分服务器程序的日志文件默认情况下都放置在目录“/var/log”中。一部分程序公用一个日志文件,一部分程序使用单个日志文件,而有些大型服务器程序由于日志文件不止一个,所以会在“/var/log”目录中建立相应的子目录来存放日志文件,这样既保证了日志文件目录的结构清晰,又可以快速地定位日志文件。有相当一部分日志文件只有root用户才有权限读取,这保证了相关日志信息的安全性。


/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序错误等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。

/var/log/cron:记录crond计划任务产生的事件信息。
/var/log/dmesg:记录Linux系统在引导过程中的各种事件信息。
/var/log/maillog:记录进入或发出系统的电子邮件活动。
/var/log/lastlog:最近几次成功登录事件和最后一次不成功登录事件。
/var/log/rpmpkgs:记录系统中安装的各rpm包列表信息。
/var/log/secure:记录用户登录认证过程中的事件信息。
/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件。
/var/run/utmp:记录当前登录的每个用户的详细信息。

  • 日志文件分析

分析日志文件的目的在于通过浏览日志查找关键信息,对系统服务进行调试,判断发生故障的原因等。
对于大多数文本格式的日志文件,只要使用tail、more、less、cat等文本处理工具就可以查看日志内容。而对于一些二进制格式的日志文件,则需要使用相应的查询命令。

  • 日志的远程同步
    在日志发送方:
    vim /etc/rsyslog.conf
    . @172.25.254.200 ##"@"表示udp协议发送,“@@”表示tcp协议发送
    systemctl restart rsyslog
    在日志接受方
    vim /etc/rsyslog.conf
    15 $ModLoad imudp ##日志接受模块
    16 ¥UDPServerRun 514 ## 开启接受端口
    systemctl restart rsyslog
    systemctl stop firewalld ##关闭火墙
    systemctl disable firewalld ##设定火墙开机关闭
    测试:
    在发送方和接受方都清空日志文件

/var/log/messages
在日志的发送方
cat /var/log/messages #查看日志已经生成
在日志接收方查看
cat /var/log/messages

  • 日志采集格式
    $template LOGFMT,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"

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

. /var/log/westos;LOGFMT

  • 时间同步服务
    服务名称
    chronyd

在服务端:
vim /etc/chrony.conf
22 allow 172.25.254.0/24 允许那些客户端来同步本机时间
29 local stratum 10 不同步任何主机的时间,本机作为时间源

systemctl restart chronyd
timedatectl set-timezone Asia/Shanghai 更改当前时区为东8区
在客户端:
vim /etc/chrony.conf
server 172.25.254.200 iburst 本机立即同步200主机的时间
systemctl restart chronyd
timedatectl set-timezone Asia/Shanghai 更改当前时区为东8区

测试:
[root@localhost ~]# chronyc souces -v

^* 172.25.0.11 10 6 377 41 +170us[ +201us] +/- 191us

timedatectl 命令

timedatectl ##管理系统时间
timedatevtl status 显示当前时间信息
set-time 设定当前时间
set-timezone 设定当前时区
set-local-rtc 0|1 设定是否使用utc时间
list-timezone 查看支持的所有时区

  • journal

journalctl 日志查看工具
-n 3 查看最近3条日志
-p err 查看错误日志
-o verbose 查看日志的详细参数
--since 查看从什么时间开始的日志
--untill 查看到什么时间为止的日志


如何使用systemd-journald保存系统日志
默认systemd-journald是不保存系统日志到硬盘的
那么关机后再次开机只能看到本次开机之后的日志
上一次关机之前的日志是无法查看的

mkdir /var/log/journal
chgrp systemd-journal /var/log/journal
chmod g+s /var/log/journal
killall -1 systemd-journald

ls /var/log/journal
946cb08e817ea4ad0916183df8c4fc817