完整的监控日志应包含以下关键信息:
[2025-02-08 09:59:00] INFO: 开始数据采集
[2025-02-08 10:00:30] INFO: 数据采集完成,共收集 100 条记录
[2025-02-08 10:01:00] ERROR: 告警发送失败,原因:网络中断
通过脚本或工具确保日志记录的完整性和一致性。
以下是一个结合监控任务和日志记录的脚本:
#!/bin/bash
# 定义变量
LOG_FILE="/var/log/monitoring.log"
# 记录日志函数
log_message() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}
# 开始监控任务
log_message "INFO: 开始数据采集"
if ! curl -s http://localhost:9090/api/v1/query?query=up > /tmp/monitoring_data.json; then
log_message "ERROR: 数据采集失败,请检查网络连接"
exit 1
fi
# 数据采集完成
log_message "INFO: 数据采集完成,共收集 $(jq '.data.result | length' /tmp/monitoring_data.json) 条记录"
# 发送告警
log_message "INFO: 开始发送告警"
if ! mail -s "监控告警" admin@example.com < /tmp/monitoring_data.json; then
log_message "ERROR: 告警发送失败,请检查邮件服务器配置"
exit 1
fi
log_message "INFO: 监控任务完成"
logger
工具logger
是一个系统日志工具,可以将日志写入 /var/log/syslog
或其他指定的日志文件中。
# 示例:记录日志到系统日志
logger -t monitoring "开始数据采集"
使用标准化的日志格式便于后续分析和处理。
JSON 格式的日志易于解析和分析。
# 示例:生成 JSON 格式的日志
echo "{\"timestamp\": \"$(date '+%Y-%m-%d %H:%M:%S')\", \"level\": \"INFO\", \"message\": \"开始数据采集\"}" >> /var/log/monitoring.json
CSV 格式的日志适合导入到表格工具中进行分析。
# 示例:生成 CSV 格式的日志
echo "$(date '+%Y-%m-%d %H:%M:%S'),INFO,开始数据采集" >> /var/log/monitoring.csv
将分散的日志集中存储,便于统一管理和分析。
rsyslog
rsyslog
是一个强大的日志管理工具,可以将日志集中存储到远程服务器。
# 配置 rsyslog 客户端
*.* @remote_server_ip:514
# 配置 rsyslog 服务器
sudo systemctl enable rsyslog
sudo systemctl start rsyslog
ELK Stack(Elasticsearch、Logstash、Kibana)是流行的日志管理解决方案。
Logstash 配置示例:
input {
file {
path => "/var/log/monitoring.log"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["http://elasticsearch_server:9200"]
index => "monitoring_logs"
}
}
避免日志文件过大影响系统性能,定期清理和归档旧日志。
# 删除超过 30 天的日志
find /var/log -type f -name "*.log" -mtime +30 -exec rm {} \;
将旧日志压缩并归档。
# 示例:归档日志
tar -czf /archive/monitoring_logs_$(date +%Y%m%d).tar.gz /var/log/*.log
通过工具实时监控日志状态,及时发现和解决问题。
使用 tail
或 less
查看日志内容。
# 实时查看日志
tail -f /var/log/monitoring.log
当日志中出现特定关键字(如 ERROR
)时发送告警通知。
# 示例:日志中出现 ERROR 时发送告警邮件
if grep -q "ERROR" /var/log/monitoring.log; then
echo "监控日志中出现错误,请检查" | mail -s "日志告警" admin@example.com
fi
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。