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日志的功能。
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。以上实例中 7、5 和 12 是操作数。关系运算符用于计算结果是否为 true 或者 false。逻辑运算符用于测定变量或值之间的逻辑。