目录
一、Linux日志系统概述
1.1 日志的重要性
系统状态监控
故障排查定位
安全审计分析
性能优化依据
合规性要求满足
1.2 日志分类
日志类型 | 存储位置 | 典型内容 |
---|---|---|
系统日志 | /var/log/messages | 内核、系统服务通用日志 |
认证日志 | /var/log/secure | 用户登录、sudo操作记录 |
启动日志 | /var/log/boot.log | 系统启动过程记录 |
内核日志 | /var/log/kern.log | 内核相关事件(Redhat系列没有) |
计划任务日志 | /var/log/cron | cron任务执行记录 |
邮件日志 | /var/log/maillog | 邮件系统相关操作 |
应用程序日志 | /var/log/{application}/ | 各应用程序专用日志 |
二、核心日志管理工具
2.1 syslog(传统系统日志)
2.1.1 配置文件
/etc/syslog.conf
2.1.2 优先级说明
优先级 | 数值 | 说明 |
---|---|---|
emerg | 0 | 系统不可用 |
alert | 1 | 需要立即采取行动 |
crit | 2 | 严重情况 |
err | 3 | 错误条件 |
warn | 4 | 警告条件 |
notice | 5 | 正常但重要的事件 |
info | 6 | 信息性消息 |
debug | 7 | 调试级信息 |
2.1.3 应用场景
传统Linux系统日志管理
兼容性要求高的环境
简单日志收集需求
2.2 rsyslog(增强型系统日志)
2.2.1 核心特性
支持TCP/UDP传输
日志内容过滤
模板化输出
高性能队列处理
支持MySQL/PostgreSQL存储
2.2.2 配置文件结构
/etc/rsyslog.conf
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 # 按服务查询 journalctl -u nginx.service # 结构化显示 journalctl -o json-pretty # 时间范围查询 journalctl --since "2023-07-01" --until "2023-07-10"
2.3.5 应用场景
使用systemd的系统
需要结构化日志分析
实时日志监控需求
2.4 logrotate(日志轮转)
2.4.1 配置文件
/etc/logrotate.conf
应用特定配置:/etc/logrotate.d/
2.4.2 核心参数说明
参数 | 作用 |
---|---|
daily/weekly | 轮转周期 |
rotate N | 保留历史文件数量 |
compress | 启用gzip压缩 |
delaycompress | 延迟压缩前一个日志文件 |
size 100M | 按大小触发轮转 |
missingok | 文件不存在时不报错 |
create 0640 user group | 新日志文件权限设置 |
2.4.3 手动执行
logrotate -vf /etc/logrotate.d/nginx
2.4.4 应用场景
防止日志文件过大
自动化日志归档
符合存储策略要求
三、高级日志管理方案
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
四、最佳实践建议
-
日志分级存储策略
-
定期备份重要日志
-
实施日志监控告警
-
敏感信息过滤处理
-
建立日志保留策略
-
定期演练日志恢复
附:常用日志分析命令速查表
# 按时间筛选 sed -n '/Jul 15 10:00:00/,/Jul 15 11:00:00/p' messages # TOP访问IP统计 awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -20 # 错误率统计 count_total=$(wc -l < access.log) count_error=$(grep -c ' 5[0-9][0-9] ' access.log) echo "Error rate: $((count_error*100/count_total))%"
实践内容:
-
配置rsyslog实现日志分级存储
-
使用journalctl进行故障诊断
-
设计并实施日志轮转策略
-
搭建简易ELK日志分析平台
-
编写自动化日志分析脚本