/var/log/messages
:通用系统活动日志/var/log/syslog
:Ubuntu/Debian系统日志/var/log/auth.log
:认证相关日志/var/log/kern.log
:内核日志/var/log/dmesg
:启动时内核环形缓冲区信息/var/log/secure
:RHEL/CentOS安全日志使用logrotate
工具进行日志轮转,配置文件位于:
- /etc/logrotate.conf
:主配置文件
- /etc/logrotate.d/
:各应用配置目录
示例配置:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
/usr/sbin/service nginx reload > /dev/null
endscript
}
现代Linux系统默认使用rsyslog替代syslog:
- 配置文件:/etc/rsyslog.conf
- 启用远程日志收集:
# 在客户端配置
*.* @192.168.1.100:514
# 或加密传输
*.* @@example.com:6514
# 在服务器端配置
module(load="imudp")
input(type="imudp" port="514")
对于使用systemd的系统:
- 查看日志:journalctl
- 常用选项:
- -u
:按服务单元过滤
- -f
:跟踪日志
- --since
/--until
:时间范围
- -p
:按优先级过滤
- -b
:当前/特定启动日志
grep
:基本文本搜索awk
:强大的文本处理sed
:流编辑器cut
:按列提取sort | uniq -c
:计数统计tail -f
:实时跟踪logwatch:每日日志摘要
apt/yum install logwatch
/usr/share/logwatch/default.conf
goaccess:Web日志分析
goaccess /var/log/nginx/access.log -o report.html --real-time-html
lnav:高级日志查看器
Filebeat配置(/etc/filebeat/filebeat.yml
):
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
output.elasticsearch:
hosts: ["elasticsearch:9200"]
Logstash管道配置示例:
input {
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
date {
match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "logs-%{+YYYY.MM.dd}"
}
}
chmod 640 /var/log/secure
auditd
的signature
选项mutate
或cipher
过滤器日志轮转策略:
delaycompress
减少I/O压力索引优化:
过滤优化:
grok
预编译模式提高效率Prometheus + Grafana:
mtail
或grok_exporter
从日志提取指标ElastAlert:
示例ElastAlert规则:
name: SSH Bruteforce Attempt
type: frequency
index: logs-*
num_events: 5
timeframe:
minutes: 1
filter:
- query:
query_string:
query: "message:\"Failed password\""
alert:
- "email"
email:
- "security@example.com"
容器日志管理:
json-file
, syslog
, journald
Fluentd/Fluent Bit:
apiVersion: v1
kind: ConfigMap
metadata:
name: fluent-bit-config
data:
fluent-bit.conf: |
[INPUT]
Name tail
Path /var/log/containers/*.log
Parser docker
[OUTPUT]
Name es
Host elasticsearch
Port 9200
Index k8s-logs
通过实施这些最佳实践,您可以构建一个高效、可靠且安全的Linux日志管理和分析系统,帮助您更好地监控系统状态、排查问题和满足合规要求。