发布于2026-07-08 阅读(0)
扫一扫,手机访问
在CentOS上折腾Golang日志告警,其实不少开发者都遇到过——程序跑着跑着,日志一直写,但真出问题的时候,却没人知道。今天就聊一个很实际的方案:怎么用Golang自己写日志,再搭配一套简单的监控脚本,实现自动告警。整个过程不复杂,但每一步都有讲究。

编写Golang程序:先搞定日志输出。核心思路是让Golang程序把运行信息写到一个固定文件里,而不是只打印到控制台。下面这个示例,打开(或创建)app.log文件,然后把log.SetOutput指向它——这样所有log.Println的内容都会落盘。循环里每5秒写一条消息,模拟真实业务场景:
package main
import (
"log"
"os"
"time"
)
func main() {
logFile, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
log.Fatalf("error opening log file: %v", err)
}
defer logFile.Close()
log.SetOutput(logFile)
for {
log.Println("This is a log message")
time.Sleep(5 * time.Second)
}
}
监控日志文件:日志在写,但怎么实时发现异常?传统套路是tail -f——它会持续输出文件新增行,非常适合做实时监控的入口。直接放后台跑就行:
tail -f app.log &
设置告警机制:光盯着看没用,得让它自己“喊人”。写一个简单的bash脚本,tail -f每输出一行,就抛给grep检查是否包含预设的关键词(比如ERROR)。一旦命中,立刻发邮件通知。下面这个脚本把目标关键词、日志文件路径和收件邮箱都放变量里,方便后续调整:
#!/bin/bash
LOG_FILE="app.log"
ALERT_EMAIL="your_email@example.com"
ALERT_KEYWORD="ERROR"
tail -f $LOG_FILE | while read line; do
if echo "$line" | grep -q "$ALERT_KEYWORD"; then
echo "Alert: Found keyword '$ALERT_KEYWORD' in log file at $(date)" | mail -s "Log Alert" $ALERT_EMAIL
fi
done
保存为log_monitor.sh后,记得加执行权限:
chmod +x log_monitor.sh
然后在后台跑起来:
./log_monitor.sh &
使用第三方工具:如果觉得手搓脚本不够灵活,可以考虑Prometheus + Grafana这套组合。它们能基于日志内容或指标配置更复杂的告警规则,通知方式也更多样(邮件、钉钉、Slack都能接)。适合日志量较大、需要统一管理的场景。
集成到系统服务:想让程序随开机自启、稳定运行?用systemd把Golang程序和监控脚本分别打包成服务。这样不仅管理方便,重启、状态查看都用systemctl解决,比手动&后台更靠谱。
以上就是在CentOS下给Golang日志加告警的几个核心步骤。实际落地时,告警关键词、阈值、通知渠道都可以按需调整。关键在于:日志要落盘,监控要持续,告警要有人看——少一环,整个链路就容易断。
下一篇:centos中js错误日志在哪
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8