rsyslog与journal日志架构

quguang 2020-01-04

系统日志架构概述

在centos7系统中有两个日志服务,分别是传统的rsyslog和新添加的systemd-journal

systemd-journal是一个改进型的日志管理服务,可以收集来自内核、系统早期的启动阶段的日志、系统守护进程在启动和运行中的标准
输出和错误信息、还有syslog的日志。
该日志服务仅仅把日志集中保存在单一结构化的日志文件/run/log默认情况下并不会持久化保存日志、每次重启后,之前的日志都会丢失
。另外,一些rsyslog无法收集的日志也会被jounral记录到

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

系统日志
/var/log/message          //绝大多数的系统日志都记录到文件
/var/log/secure           //所有跟安全和认知授权等日志都会记录到此文件中  *****
/var/log/maillog          //邮件服务日志
/var/log/cron             //计划任务日志                             *****
/var/log/boot.log         //系统启动相关的日志
/var/log/demsg            //内核缓冲信息,系统启动时,硬件相关信息
/var/log/audit/audit.log  //系统审计相关的日志

程序日志
/var/log/yum.log          //yum相关的日志                            ***
/var/log/xferlog          //ftp日志
/var/log/httpd/access_log //httpd访问日志                            *****
/var/log/httpd/error_log  //httpd错误日志                            *****
/var/log/mysql.log        //mysql日志                               *****
...

特殊日志,二进制文件,不能直接查看
/var/log/wtmp             //登录用户信息,使用w命令                     *****
/var/log/btmp             //最近登录用户信息,使用last命令               ***
/var/log/lastlog          //所有用户登录信息,使用lastlog命令
案例1:统计远程登录成功的IP地址TOP10
[ log]# grep ‘Accepted‘ /var/log/secure | awk ‘{print $11}‘ | sort | uniq -c | head
      5 10.0.1.1

案例2:统计远程登录失败的用户排名
[ log]#  grep ‘Failed‘ /var/log/secure | awk ‘{print $9}‘ | sort | uniq -c | sort -rn
      4 root
      1 www

采集->排序—>去重->排序

rsyslog日志审查

rsyslog主配置文件是rsyslog.conf

syslog日志类型

syslog日志的级别:
LOG_EMERG   //紧急,致命信息,服务无法继续运行,内核奔溃等
LOG_ALERT   //报警,需要立即处理,磁盘空间使用95%等
LOG_CRIT    //致命行为
LOG_ERR     //错误行为
LOG_WARNING //警告信息
LOG_NOTIC   //普通信息
LOG_INFO    //标准信息
LOG_DEBUG   //调试信息,排错所需,一般不建议使用
看懂简单的日志设定规则,分析日志字段
手工发送日志logger
[ log]# logger -p authpriv.info -t "test" "ERR"
[ log]# tail -1l /var/log/secure
Jan  4 10:28:37 xiaoming test: ERR

journal日志审查

这是systemd自带的日志服务工具所有日志记录到/run/log文件中,必须使用如下命令才可打开

# journalctl               查看所有日志
# journalctl -n 5          查看最后5条日志
# journalctl -p err        查看err类型的日志
# journalctl -f            不断输出最后10条日志
# journalctl --since today 查看今天的日志
# journalctl --since "2020-02-03 08:00:00" --until "2020-02-04 09:00:00"
# journalctl -o verbose    查看日志详细信息
# journalctl _SYSTEMD_UNIT=sshd.service

日志轮询logrotate

一个项目一般由多个组件协作实现,各组件会生成不同的日志。为控制日志,组件一般对自己产生的日志会有一定的设置,这些日志配置通常是写死的
,常见控制日志信息的工具有Log43和SLF43。因为磁盘容量有限,在多个组件共同作用下,可能会出现日志未到规定时间删除,而磁盘大小被日
志撑满,不能再写入的情况。

logrotate一定程度上可以简化对会生成大量日志文件的系统的管理。logrotate可以实现自动轮替、删除、压缩和mail日志的功能。

相关推荐