目录

rsyslog日志管理

常见日志文件

日志级别

日志类型

配置不同类型/级别的日志的保存路径

为本机配置日志服务器

将本机配置为日志服务器

安全配置rsyslog

手动发送syslog日志

systemd-journal日志管理

journal日志配置文件

journal日志分析

对journal日志做持久化存储

日志文件轮转


        Linux目前主要有两种日志服务,分别是传统的rsyslog和新添加的systemd-journal

rsyslog

作为传统的系统日志服务,会把所有收集到的日志都记录到/var/log目录下的各个日志文件中

systemd-journal -- 一些rsyslog无法收集的日志也会被journal记录到

作为改进型的日志管理服务,可以收集来自内核、系统启动阶段的日志、系统守护进程在启动和运行中的标准输出和错误信息、还可以收集syslog服务的日志;该日志服务仅仅是把日志集中保存在单一结构化的日志文件中,然后用日志查看工具,来对我们的日志进行分析


rsyslog日志管理

常见日志文件

系统日志文件

/var/log/wtmp             存放与启动与关机等相关的日志信息

/var/log/boot.log         存放系统开机自检事件及引导过程等日志信息

/var/log/messages       存放系统以及各个服务的运行和报错的日志信息

/var/log/secure            存放与系统安全相关的日志信息

/var/log/lastlog           存放用户登录成功的时间、终端名称、IP地址等日志信息

/var/log/btmp             存放用户登录失败的时间、终端名称、IP地址等日志信息

程序日志文件

/var/log/xfer.log                    ftp相关日志

/var/log/httpd/access_log      httpd访问日志

/var/log/httpd/error_log        httpd错误日志

/var/log/yum.log                       yum相关日志

日志级别

emerg    系统出现严重故障(内核崩溃等)

alert       需要立即修复的故障(数据库损坏等)

crit         危险较高的故障(硬盘损坏等导致系统运行失败等)

err          一般的危险故障(服务启动或运行失败)

warning  警告信息(服务参数或功能配置错误)

notice     一般无危险的故障

info        通用性消息,提示用户

debug    调试程序所产生的信息

日志类型

auth              用户认证相关的日志

authpriv        服务认证相关的日志

mail               邮件相关的日志

cron           时间任务相关的日志

kern         内核类型相关的日志

news             系统更新信息相关的日志

user               用户相关的日志

配置不同类型/级别的日志的保存路径

rsyslog的日志管理都依赖于配置文件的管理,此服务的配置文件保存在/etc/rsyslog.conf中(持久化存储,设备重启后日志不会消失)

vim /etc/rsyslog.conf
  *.info;mail.none;authpriv.none;cron.none    /var/log/messages      /var/log/messages包含任何日志(除了邮件日志、authpriv日志、cron日志的任何其它的info级别任务都在此文件下)
  authpriv.*        /var/log/secure   和用户认证有关的日志保存在此文件夹
  mail.*           /var/log/maillog   邮件日志保存的文件目录
  cron.*           /var/log/cron       和计划任务有关的日志保存的文件目录
  uucp,news.crit    /var/log/spooler   关键级别的日志保存的文件目录
  local7.*          /var/log/boot.log  和开机有关的日志保存的文件目录

  .emerg          :omusrmsg:*      任何严重级别的日志都会在终端显示( :omusrmsg:*)

为本机配置日志服务器

本机作为客户端,将本机的日志存放到日志服务器中

配置日志服务器的地址

vim /etc/rsyslog.recive
 *.info;mail.none;authpriv.none;cron.none   @日志服务器地址或者服务器名称

将除了邮件日志、authpriv日志、cron日志的任何其它的info级别任务都存放到此日志服务器

systemctl restart rsyslog.recive  重启日志服务

进行测试

进行客户端测试(在客户端下载软件包,监控日志服务器)

客户端上:yum -y install vsftpd

服务器上:tail -f /var/log/messages  查看rsyslog服务端/var/log/messages是否有变化

将本机配置为日志服务器

本机作为服务器,将其他设备产生的日志保存在本机上(在其他设备上配置日志服务器的地址为本机,然后本机上开启日志服务器的功能)

开启日志服务器功能
vim /etc/rsyslog.conf
module(load="imudp")                载入UDP输入模块(根据需要要在防火墙放行)
input(type="imudp" port="514")         UDP Server监听在514端口
module(load="imtcp")                   载入TCP输入模块
input(type="imtcp" port="514")         TCP Server监听在514端口
systemctl restart rsyslog.recive  重新启动服务

开启防火墙
firewall-cmd --add-port=514/tcp --permanent
firewall-cmd --add-port=514/udp --permanent
firewall-cmd --reload  刷新防火墙策略
firewall-cmd --list-all  查看策略

监听514端口
lsof -i:514 开始监听514端口

安全配置rsyslog

通过为日志文件配置隐藏权限来实现

chattr +a /var/log/messages
      给此文件加锁(追加锁,只可以向文件中添加数据,无法删除此文件,也无法清除文件)
lsattr /var/log/messages
       查看文件的隐藏权限

手动发送syslog日志

logger命令可以发送消息到rsyslog服务;默认将优先级为notice的消息发送给user设备

logger -p local7.notice “Log entry created on host”
发送内容为““Log entry。。。”的优先级为local7.notice的日志到系统日志中
       -p 指定日志优先级(格式为facility.level格式,默认级别为user.notice)

facility:日志的类型

user                   用户相关日志(默认值)

uucp                  由uucp生成的信息

local0~7            用来定义本地策略

auth                  用户认证类型

authpriv            服务认证类型

cron                  时间计划任务

daemon             系统守护进程

kern                  内核相关的信息

lpr                     打印服务相关的信息

mail                   电子邮件相关的信息

news                  来自新闻服务器的信息

syslog                由syslog生成的信息

level: 日志的级别(debug、info等8种级别)


systemd-journal日志管理

journal日志集中保存在单一结构化的日志文件中,默认日志文件存放在/run/log/journal(非持久化存储),每次系统重启之后,都会清空日志

systemctl status systemd-journald.service  查看此日志服务的状态

journal日志配置文件

journal的配置文件为/etc/systemd/journald.conf

Storage=auto  在哪里存储日志文件
       volatile   表示仅保存在内存中,也就是/run/log/journal目录中(按需自动创建目录)
       persistent 表示优先保存在硬盘中,即保存在/var/log/journal目录中(按需自动创建)
       auto       默认值,如果/var/log/journal目录存在,则保存在此目录;如果此目录不存在,则保存在/run/log/journal目录中(按需自动创建目录)
       none        不保存日志

SystemMaxUse=          限制总的日志文件所占用的硬盘空间
SystemMaxFileSize=     限制单个日志文件所占用的硬盘空间
SystemMaxFiles=100     限制硬盘最多允许同时存在多少个日志文件

RuntimeMaxUse=         限制总的日志文件所占用的内存空间
RuntimeMaxFileSize=    限制单个日志文件所占用的内存空间
RuntimeMaxFiles=100    限制内存最多允许同时存在多少个日志文件


MaxFileSec=            日志滚动的时间间隔
MaxRetentionSec=       日志文件最大保留期限
                  单位为: year、month、week、day、h、m

ForwardToSyslog=no     接收日志后是否转发给传统的syslog守护进行
ForwardToKMsg=no       接收日志后是否转发给日和日志缓冲区(kmsg)
ForwardToConsole=no    接收日志后是否转发给系统控制台
ForwardToWall=yes      接收日志后是否将其作为警告信息发送给所有已登录用户

TTYPath=/dev/console   指定所使用的控制台(当ForwardToConsole=yes是使用)

MaxLevelStore=debug    设置记录到日志文件中的最高日志等级(默认为debug)
MaxLevelSyslog=debug   设置转发给syslog守护进程的最高日志等级
MaxLevelKMsg=notice    设置转发给内核日志缓冲区(kmsg)的最高日志等级
MaxLevelConsole=info   设置转发给系统控制台的最高日志等级
MaxLevelWall=emerg     设置作为警告信息发送给所有已登录用户的最高日志等级

journal日志分析

journal把日志集中保存在单一结构化的日志文件中,通过journalctl命令进行分析

journalctl -n 10                                 查看最新的10条日志
journalctl --since "2023-04-20 19:40"            显示此事件之后的日志
journalctl --until "2023-01-04 10:00:00"         显示此日志到此时间
journalctl -u httpd                              查看指定服务(HTTPD)的日志
journalctl -f                                    监控日志
journalctl --disk-usage                          查看日志的大小(临时配置)
journalctl --vacuum-size=1G                 设置日志的存放大小(临时配置)
journalctl --vacuum-time=1h                 设置日志在系统中存放的最长时间
journalctl -p err            按照错误级别的方式查看journal日志(日志级别同rsyslog日志)
journalctl -o                设定日志的显示方式
       short     经典模式显示日志
       verbose 显示日志的全部字节
       export  适合传输和备份的二进制格式
       json        js格式显示

journalctl -b -1     查看上一次启动系统的日志(需要将journal更改为持久化存储)

对journal日志做持久化存储

journal日志持久化存储的存放位置为/var/log/journal

方式一

vim /etc/systemd/journald.conf
 Storage=auto改为Storage=persistent

systemctl restart systemd-journald.service

方式二

vim /etc/systemd/journald.conf
 Storage=auto

mkdir /var/log/journal                             建立日志存放的目录
chgrp systemd-journal /var/log/journal    修改目录的所有组
chmod 2775 /var/log/journal                   修改目录的权限
systemctl restart systemd-journald.service

日志文件轮转

通过logrotate 工具进行日志文件轮转,保证操作系统的稳定性,避免系统日志过大导致性能低下、空间不足以及日志信息丢失等问题

logrotate的大致工作过程

  1. 查找所需要的轮转的日志文件
  2. 检查此日志文件是否超过大小限制
  3. 如果超过大小限制,则使用相应的压缩方式对原始的日志进行压缩
  4. 根据需要,可以删除较早的日志或日志副本
  5. 重置日志文件,继续激励新的日志文件

日志轮转配置文件

logrotate主要的配置文件为/etc/logrotate.conf 
vim /etc/logrotate.confweekly                            按照周轮替
 rotate 4                           每4周轮替一次
 create                            按照创建新的日志文件进行轮转
 dateext                            对日期作为日志文件的后缀
 compress                          对日志文件做压缩
 include /etc/logrotate.d   对包含在/etc/logrotate.d目录中的文件做轮转

例如:如果在2022-01-02轮转,则旧的/etc/logrotate.d/dnf日志文件就变为/etc/logrotate.d/dnf-20220102
Logo

更多推荐