一、前置准备:确保Syslog服务正常运行
Debian系统默认使用rsyslog作为日志服务,需先确认其状态正常。通过以下命令检查服务状态:
sudo systemctl status rsyslog
若未运行,启动并启用服务:
sudo systemctl start rsyslog
sudo systemctl enable rsyslog
日志文件默认存储在/var/log/syslog(系统综合日志)和/var/log/kern.log(内核日志)中。
二、配置rsyslog捕获资源相关日志
需调整rsyslog配置,将资源监控相关的日志分离到独立文件,便于后续分析。以监控CPU使用率为例:
sudo nano /etc/rsyslog.d/cpu_monitor.conf
/var/log/cpu_usage.log,并停止进一步处理(避免重复记录)::msg, contains, "CPU usage" -/var/log/cpu_usage.log
& stop
sudo systemctl restart rsyslog
类似地,可针对内存(如“memory usage”)、磁盘(如“disk usage”)等关键词创建对应的配置文件(如memory_monitor.conf、disk_monitor.conf)。
三、使用工具生成并发送资源日志到Syslog
需通过工具主动收集系统资源数据,并通过logger命令发送到rsyslog。以下以CPU监控为例:
/usr/local/bin/monitor_cpu.sh):#!/bin/bash
CPU_USAGE=$(top -bn1 | grep load | awk '{printf "%.2f", $(NF-2)}')
THRESHOLD=80 # 设置阈值为80%
if (( $(echo "$CPU_USAGE > $THRESHOLD" | bc -l) )); then
logger -t CPU_MONITOR "CPU usage is high: ${CPU_USAGE}%"
fi
sudo chmod +x /usr/local/bin/monitor_cpu.sh
sudo crontab -e
添加以下内容:0 * * * * /usr/local/bin/monitor_cpu.sh
脚本会每小时检查CPU使用率,若超过阈值则向rsyslog发送日志。
四、分析Syslog中的资源日志
tail命令实时查看特定资源日志文件(如CPU使用率日志):sudo tail -f /var/log/cpu_usage.log
sudo apt install logwatch
编辑配置文件/etc/logwatch/conf/logwatch.conf,设置报告范围和输出方式:Detail = High
Range = today
Service = All
Output = mail
MailTo = your_email@example.com
运行logwatch生成报告:sudo logwatch
journalctl查看系统日志(包括资源相关日志):# 查看所有包含“CPU”的日志
journalctl | grep "CPU"
# 查看特定时间段的日志(如2025-10-01至2025-10-30)
journalctl --since "2025-10-01" --until "2025-10-30"
# 实时查看日志
journalctl -f
/etc/logstash/conf.d/syslog.conf):input {
syslog {
port => 514
type => "syslog"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "syslog-%{+YYYY.MM.dd}"
}
}
http://your_server_ip:5601),创建索引模式(如syslog-*),通过可视化 dashboard分析资源使用趋势。五、设置资源监控告警
grep和邮件工具(如mailutils)设置阈值告警。例如,监控/var/log/cpu_usage.log中的高CPU日志:if grep -q "CPU usage is high" /var/log/cpu_usage.log; then
echo "High CPU usage detected!" | mail -s "CPU Alert" your_email@example.com
fi
将上述命令添加到定时任务(如每30分钟运行一次),及时通知管理员。check_cpu插件可直接监控CPU使用率,并集成到Nagios服务器。