目录
一、Linux日志系统概述
1.1 日志的重要性
-
系统状态监控
-
故障排查定位
-
安全审计分析
-
性能优化依据
-
合规性要求满足
1.2 日志分类
日志类型 | 存储位置 | 典型内容 |
---|---|---|
系统日志 | /var/log/messages | 内核、系统服务通用日志 |
认证日志 | /var/log/secure | 用户登录、sudo操作记录 |
启动日志 | /var/log/boot.log | 系统启动过程记录 |
内核日志(红帽专用) | /var/log/kern.log | 内核相关事件 |
计划任务日志 | /var/log/cron | cron任务执行记录 |
邮件日志 | /var/log/maillog | 邮件系统相关操作 |
应用程序日志 | /var/log/{application}/ | 各应用程序专用日志 |
二、核心日志管理工具
2.1 syslog(传统系统日志)
2.1.1 配置文件
/etc/syslog.conf
2.1.2 配置语法
# 格式:设备.优先级 动作
auth.* /var/log/auth.log
*.emerg *
mail.err /var/log/mail.err
例:
[root@bogon ~]# vim /etc/rsyslog.conf
# rsyslog configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# or latest version online at http://www.rsyslog.com/doc/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### GLOBAL DIRECTIVES ####
# Where to place auxiliary files
global(workDirectory="/var/lib/rsyslog")
# Use default timestamp format
module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat")
#### MODULES ####
module(load="imuxsock" # provides support for local system logging (e.g. via logger command)
2.1.3 优先级说明
优先级 | 数值 | 说明 |
---|---|---|
emerg | 0 | 系统不可用 |
alert | 1 | 需要立即采取行动 |
crit | 2 | 严重情况 |
err | 3 | 错误条件 |
warn | 4 | 警告条件 |
notice | 5 | 正常但重要的事件 |
info | 6 | 信息性消息 |
debug | 7 | 调试级信息 |
2.1.4 应用场景
-
传统Linux系统日志管理
-
兼容性要求高的环境
-
简单日志收集需求
2.2 rsyslog(增强型系统日志)
2.2.1 核心特性
-
支持TCP/UDP传输
-
日志内容过滤
-
模板化输出
-
高性能队列处理
-
支持MySQL/PostgreSQL存储
2.2.2 配置文件结构
/etc/rsyslog.conf
[root@bogon ~]# vim /etc/rsyslog.conf
# rsyslog configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# or latest version online at http://www.rsyslog.com/doc/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### GLOBAL DIRECTIVES ####
# Where to place auxiliary files
global(workDirectory="/var/lib/rsyslog")
# Use default timestamp format
module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat")
#### MODULES ####
module(load="imuxsock" # provides support for local system logging (e.g. via logger command)
2.2.3 高级功能配置示例
-
日志存储到MySQL:
$ModLoad ommysql
*.* :ommysql:localhost,Syslog,rsyslog,password
-
日志文件切割:
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
2.2.4 应用场景
-
企业级日志集中管理
-
需要结构化存储的环境
-
高并发日志处理场景
2.3 journald(systemd日志系统)
2.3.1 核心特性
-
二进制日志存储
-
结构化日志记录
-
实时日志查询
-
与systemd深度集成
2.3.2 配置文件
/etc/systemd/journald.conf
2.3.3 常用配置参数
[Journal]
Storage=persistent # 存储方式(persistent/volatile)
Compress=yes # 启用压缩
SystemMaxUse=1G # 最大磁盘使用量
SystemMaxFileSize=100M # 单个文件最大尺寸
MaxRetentionSec=1month # 日志保留时间
2.3.4 常用命令
# 实时日志监控
journalctl -f或-xe
# 按服务查询
journalctl -u nginx.service
# 结构化显示
journalctl -o json-pretty
# 时间范围查询
journalctl --since "2023-07-01" --until "2023-07-10"
-xe
[root@bogon log]# journalctl -xe
░░ Support: https://wiki.rockylinux.org/rocky/support
░░
░░ The unit NetworkManager-dispatcher.service has successfully entered the '>
5月 29 19:39:55 bogon systemd[1]: Starting PackageKit Daemon...
░░ Subject: packagekit.service 单元已开始启动
░░ Defined-By: systemd
░░ Support: https://wiki.rockylinux.org/rocky/support
░░
░░ packagekit.service 单元已开始启动。
5月 29 19:39:55 bogon PackageKit[160750]: daemon start
5月 29 19:39:55 bogon systemd[1]: Started PackageKit Daemon.
░░ Subject: packagekit.service 单元已结束启动
░░ Defined-By: systemd
░░ Support: https://wiki.rockylinux.org/rocky/support
░░
░░ packagekit.service 单元已结束启动。
░░
░░ 启动结果为“done”。
5月 29 19:39:57 bogon PackageKit[160750]: search-file transaction /78_dbcaeb>
2.3.5 应用场景
-
使用systemd的系统
-
需要结构化日志分析
-
实时日志监控需求
2.4 logrotate(日志轮转)
2.4.1 配置文件
/etc/logrotate.conf
应用特定配置:/etc/logrotate.d/
2.4.2 典型配置示例
/var/log/nginx/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
systemctl reload nginx
endscript
}
2.4.3 核心参数说明
参数 | 作用 |
---|---|
daily/weekly | 轮转周期 |
rotate N | 保留历史文件数量 |
compress | 启用gzip压缩 |
delaycompress | 延迟压缩前一个日志文件 |
size 100M | 按大小触发轮转 |
missingok | 文件不存在时不报错 |
create 0640 user group | 新日志文件权限设置 |
2.4.4 手动执行
logrotate -vf /etc/logrotate.d/nginx
2.4.5 应用场景
-
防止日志文件过大
-
自动化日志归档
-
符合存储策略要求
三、高级日志管理方案
3.1 ELK Stack(分布式日志)
组件构成:
-
Elasticsearch:日志存储与检索
-
Logstash:日志收集处理
-
Kibana:数据可视化
3.1.1 典型架构
-
Filebeat采集日志
-
Logstash过滤处理
-
Elasticsearch存储
-
Kibana展示分析
3.1.2 Filebeat配置示例
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/*.log
output.logstash:
hosts: ["logstash:5044"]
3.2 auditd(安全审计)
3.2.1 核心配置文件
/etc/audit/auditd.conf
3.2.2 审计规则配置
# 监控文件访问 -a exit,always -F path=/etc/passwd -F perm=wa # 监控用户登录 -a exit,always -F arch=b64 -S execve -k user_exec
3.2.3 审计日志查询
ausearch -k user_exec -i
aureport -au