本文最后更新于:2023年12月5日 晚上
系统日志
将系统和应用发生的事件记录至日志中,以助于排错和分析使用:
日志记录的内容包括:
- 历史事件:事件、地点、人物、事件
- 日志级别:事件的关键程度 LogLevel
各种系统日志服务
- sysklogd:CentOS 5 之前版本采用的日志管理系统服务
- rsyslog:CentOS 6 以后版本的系统管理服务
- 多线程
- UDP、TCP、SSL、TLS、RELP
- MySQL、PGSQL、Oracle 实现日志存储
- 强大的过滤器,可实现过滤记录日志信息中任意部分
- 自定义输出格式
- ELK:Elasticsearch + Logstash + Kibana
常见日志文件
- /var/log/secure:系统安全日志,文本格式,应周期性分析
- /var/log/btmp:当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb 命令进行查看
- /var/log/wtmp:当前系统上,用户正常登录系统的相关日志信息,二进制格式,last 命令可以查看
- /var/log/lastlog:每一个用户最近一次的登录信息,二进制格式,lastlog 命令可以查看
- /var/log/dmesg:CentOS7 之前版本系统引导过程中的日志信息,文本格式,开机后的硬件变化将不再记录专用命令 dmesg 查看,可持续记录硬件变化的情况
- /var/log/boot.log:系统服务启动的相关信息,文本格式
- /var/log/messages :系统中大部分的信息
- /var/log/anaconda : anaconda 的日志
rsyslog
facility:设施,或者叫设备,从功能或程序上对日志进行归类
priority:优先级别,从低到高排序
参看帮助: man 3 syslog
,man logger
配置文件
配置文件:/etc/rsyslog.conf 和 /etc/rsyslog.d/*
/etc/rsyslog.conf 配置文件格式,由三部分组成:
- MODULES:相关模块配置
- GLOBAL DIRECTIVES:全局配置
- RULES:日志记录相关的规则配置
RULES 配置格式:
日志文件有很多,如:/var/log/message、cron、secure 等,基本格式都是类似的,如下:
范例:将 ssh 服务的日志记录到自定义的 local 的日志设备
启用网络日志服务
启用网络日志服务功能,可以将多个远程主机的日志,发送到集中的日志服务器,方便统一管理。
范例:启用网络日志功能
logger 命令
logger 命令可以往系统日志中写入信息
日志管理工具 journalctl
CentOS7 以后版本利用 Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用 journalctl 一个命令,查看所有日志(内核日志和应用日志)
配置文件:
命令格式:
OPTIONS:
范例:journalctl 用法
实战案例 1:利用 mysql 存储日志信息
目标:将 rsyslog 收集的日志记录在 mysql 中
环境:两台主机
- rsyslog 日志服务器:10.0.0.71
- mysql 数据库服务器:10.0.0.72
实现:
- 10.0.0.71 安装 rsyslog-mysql
- 10.0.0.72 配置 mysql
- 10.0.0.71 修改 rsyslog 配置文件
- 测试
实战案例 2:通过 loganalyzer 展示数据库中的日志
loganalyzer 是用 php 语言实现的日志管理系统,可将 MySQL 数据库的日志用丰富的 WEB 方式进行展示
官网: https://loganalyzer.adiscon.com
目标:通过 loganalyzer 展示数据库中的日志
logrotate 日志转储
logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,称为日志转储或滚动。可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行
配置文件主要参数如下:
范例: