Linux 日志管理

Linux 日志管理

介绍

    Linux 日志管理是指对 Linux 系统中产生的各种日志文件进行收集、分析、备份、轮转和删除等操作,以便监控系统的运行状况,诊断和解决问题,提高系统的安全性和性能。

    Linux 系统中有两种主要的日志服务,一种是传统的 rsyslog 服务,它是一个灵活的日志处理器,可以将日志信息发送到不同的目标,如文件、数据库、网络等。另一种是新添加的 systemd-journal 服务,它是一个二进制日志系统,可以存储更多的元数据,如时间戳、主机名、优先级等,并支持日志查询和过滤。

    Linux 系统中的日志文件通常存放在 /var/log 目录下,不同的程序和服务会生成不同的日志文件,记录了各种类型的信息,如内核消息、用户登录事件、程序错误等。常见的日志文件及其存放内容如下:

 

 

日志文件存放内容
/var/log/message 内核消息及各种应用程序的公共日志信息,是 Red Hat Linux 中最常用的日志之一
/var/log/secure 与安全相关的日志信息
/var/log/maillog 与邮件相关的日志信息
/var/log/cron 与定时任务相关的日志信息
/var/log/dmesg 引导过程中的各种事件信息
/var/log/lastlog 每个用户最近一次登录信息
/var/log/wtmp 每个用户登录注销及系统启动和停机事件
/var/log/btmp 失败的、错误的登录尝试及验证事件

 

 

        Linux 系统中的日志文件会定期进行轮转,即将旧的日志文件重命名并压缩,创建新的日志文件。这样可以避免日志文件占用过多的磁盘空间,并保留一定时间段内的日志记录。日志轮转由 logrotate 命令实现,它根据 /etc/logrotate.conf 和 /etc/logrotate.d/ 目录下的配置文件来执行轮转操作。这些配置文件可以指定轮转周期、轮转次数、轮转方式、轮转后执行的命令等。

 

 

Linux 系统中有多种命令和工具可以用来查看和分析日志文件,例如:

 

  • tail 命令:用于查看日志文件的最后几行,常用 -f 选项实时监控日志变化。

  • grep 命令:用于在日志文件中搜索特定的关键字或模式。

  • who 命令:用于查看当前登录到系统的用户信息。

  • last 命令:用于查看成功登录到系统的用户记录。

  • lastlog 命令:用于查看系统中所有用户最近一次登录信息。

  • lastb 命令:用于查看用户错误的登录列表。

  • Logcheck 工具:用于分析系统日志并报告异常或重要事件。

  • Logcheck 工具:用于分析系统日志并报告异常或重要事件。

 

 

 

 

相关软件包和配置文件

 

图片

软件包

图片

[root@Demo01 ~]# rpm -qa | grep rsyslog

 

rsyslog-relp-8.24.0-57.el7_9.3.x86_64

rsyslog-libdbi-8.24.0-57.el7_9.3.x86_64

rsyslog-mmnormalize-8.24.0-57.el7_9.3.x86_64

rsyslog-mmjsonparse-8.24.0-57.el7_9.3.x86_64

rsyslog-crypto-8.24.0-57.el7_9.3.x86_64

rsyslog-gnutls-8.24.0-57.el7_9.3.x86_64

rsyslog-snmp-8.24.0-57.el7_9.3.x86_64

rsyslog-kafka-8.24.0-57.el7_9.3.x86_64

rsyslog-mysql-8.24.0-57.el7_9.3.x86_64

rsyslog-mmkubernetes-8.24.0-57.el7_9.3.x86_64

rsyslog-gssapi-8.24.0-57.el7_9.3.x86_64

rsyslog-mmaudit-8.24.0-57.el7_9.3.x86_64

rsyslog-mmsnmptrapd-8.24.0-57.el7_9.3.x86_64

rsyslog-8.24.0-57.el7_9.3.x86_64

rsyslog-pgsql-8.24.0-57.el7_9.3.x86_64

rsyslog-udpspoof-8.24.0-57.el7_9.3.x86_64

rsyslog-elasticsearch-8.24.0-57.el7_9.3.x86_64

rsyslog-doc-8.24.0-57.el7_9.3.noarch

 

图片

配置文件

图片

/etc/rsyslog.conf #主配置文件

 

/etc/rsyslog.d/*.conf #辅配置文件

 

/var/log/ #日志文件存放位置

 

 

/usr/sbin/rsyslogd #执行文件

 

/usr/lib64/rsyslog/ #模块路径

 

/usr/lib/systemd/system/rsyslog.service #服务单元

 


[root@Demo01 ~]# grep '####' /etc/rsyslog.conf 

#### MODULES ####定义模块

#### GLOBAL DIRECTIVES ####定义全局环境

#### RULES #### 定义规则

 

 

模块定义

module(load="imuxsock"    # 提供对本地系统日志的支持

       SysSock.Use="off") # 关闭通过本地日志接口的信息接收功能,日志信息接收通过下面的imjournal模块

module(load="imjournal"             # 提供对systemd日志的访问

       StateFile="imjournal.state") # 定义状态文件,rsyslog用于记录文件上传进度,避免日志内容混乱

 

 

全局环境设置

# 定义工作目录

global(workDirectory="/var/lib/rsyslog")

 

# 使用默认的时间戳格式

module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat")

 

# 定义辅助配置文件位置

include(file="/etc/rsyslog.d/*.conf" mode="optional")

 

规则设置

信息来源.安全级别 处理方式

 

信息来源

  kern:内核相关的日志

  user:用户相关的日志

        mail:邮件相关的日志

        daemon:系统服务相关的日志

        lpr:打印相关的日志

        cron:计划任务相关的日志

        authpriv:认证相关的日志

        news:新闻相关的日志

        uucp:文件copy相关的日志

        local0-local7:自定义相关的日志信息

*: 所有

安全级别

       debug:  调试

info:   消息

notice: 注意

    warn,warning: 警告

err,error: 错误

crit: 严重级别

alert: 需要立即修改该的信息

emerg,panic: 内核崩溃,系统接近崩溃

*:所有日志级别

        none:没有任何级别,也就是不记录日志信息

 

表达形式

mail.err err+crit+alert+emerg

mail.=err err

mail.!err 除了err

 

处理方式

/PATH/FILENAME:将信息储存至 /PATH/FILENAME文件中。注意,如果要系统日志服务把信息储存到文件,该文件必须以

斜线(/) 开头的绝对路径命名之。

USERNAME:将信息送给已登录的用户。

@HOSTNAME:代表使用udp协议将信息转送到远端的日志服务器。

@@hostname:代表使用tcp协议将信息传送到远端的日志服务器

*:将信息传送给所有已登录的用户。

 


#### RULES ####

##########  日志设备.日志级别  ##################          #########  消息发送位置  ###############

# Log all kernel messages to the console.

# Logging much else clutters up the screen.

#kern.*                                                 /dev/console

# Log anything (except mail) of level info or higher.

# Don't log private authentication messages!

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# The authpriv file has restricted access.

authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.

mail.*                                                  -/var/log/maillog

# Log cron stuff

cron.*                                                  /var/log/cron

# Everybody gets emergency messages

*.emerg                                                 :omusrmsg:*

# Save news errors of level crit and higher in a special file.

uucp,news.crit                                          /var/log/spooler

# Save boot messages also to boot.log

local7.*                                                /var/log/boot.log

local2.info           /tmp/test.log

 

图片

日志设备

图片

日志设备.级别说明
auth -pam(linux中的认证机制) 产生的日志
authpriv -ssh,ftp 等登录信息的验证信息
cron 时间任务相关
kern -内核相关
lpr -打印
mail -邮件
mark(syslog) -rsyslog服务内部的信息,时间标识
news -新闻组
user -用户程序产生的相关信息
uucp -unix to unix copy unix主机之间的相关通信
local 1~7 自定义日志设备文件

图片

日志级别

图片

  
级别 说明
NONE 什么都不记录
EMERG (紧急) 导致主机系统不可用的情况
ALERT(警告) 必须马上采取解决措施
CRIT (严重) 比较严重的情况
ERR 运行时的错误
WARNING (提醒) 可能影响系统功能的事件
NOTICE(注意) 不会影响系统功能,但是值得注意
INFO 一般信息
DEBUG 调试信息
自下而上,信息记录的越来越少  

 

 

图片

常用的日志文件

图片

/var/log/boot.log #系统启动时的日志。

 

/var/log/dnf.* #dnf软件包管理器相关日志

 

/var/log/firewalld #防火墙日志

 

/var/log/lastlog #所有用户最后一次登录信息,需要使用lastlog命令查看

 

/var/log/maillog #电子邮件系统相关日志

 

/var/log/messages #整体的系统日志,具体记录范围取决于服务的配置文件

 

/var/log/wtmp #记录当前登录和过去登录的用户信息,使用last命令查看

 

 

 

图片

日志格式

图片

[root@Demo01 ~]# tail -n 20 /var/log/messages 

Jul  1 05:05:41 LAMP dhclient[2115]: bound to 192.168.10.25 -- renewal in 736 seconds.

Jul  1 05:05:41 LAMP systemd: Starting Network Manager Script Dispatcher Service...

Jul  1 05:05:41 LAMP dbus[777]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'

Jul  1 05:05:41 LAMP systemd: Started Network Manager Script Dispatcher Service.

 

 

 

DATE  TIME  HOSTNAME  APP(NAME)[PID]: MESSAGES

 

每一个字段的意义如下说明:

DATE:信息发生的日期。

TIME:信息发生的时间。

HOSTNAME:信息发生的主机。

APP:产生信息的软件。

NAME:软件的名称,或是软件组件(Component)的名称。可以省略。

PID:进程标识符 (Process ID)。可以省略。

MESSAGES:信息的内容。 

 

 

 

 

Sep 15 09:03:59 ecs-t6-large-2-linux-20190824103606 systemd-logind: New session 314 of user root.

    时间            主机名                          子系统名            消息字段

 

 

 

 

 

 

 

收录于合集 #linux
 36
上一篇​什么是数据存储?下一篇Linux 容器是什么?Linux Container 简介
阅读 295
Linux分布式主任
58篇原创内容
 
posted @ 2023-07-03 10:19  往事已成昨天  阅读(438)  评论(0编辑  收藏  举报