温馨提示×

debian怎样监控golang日志

小樊
43
2026-09-04 01:53:21
栏目: 编程语言

在 Debian 上监控 Golang 应用日志,常见做法分为几类:直接看日志文件 / 进程输出用系统工具监控集中式日志方案。下面按“从简单到专业”给你一个清晰路线。


一、最基础:直接查看 Golang 日志

1. 查看程序标准输出

如果你直接用:

./myapp

日志在终端,按 Ctrl+C 会停。

建议用:

nohup ./myapp > app.log 2>&1 &
tail -f app.log

2. 使用 tail 实时监控

tail -f /var/log/myapp.log

如果日志按天切割:

tail -F /var/log/myapp.log

二、系统级监控(推荐生产环境)

1. 用 systemd 管理 Golang 服务(强烈推荐)

创建服务文件

sudo vim /etc/systemd/system/myapp.service

示例:

[Unit]
Description=Golang App
After=network.target

[Service]
ExecStart=/opt/myapp/myapp
WorkingDirectory=/opt/myapp
User=appuser
Restart=always
StandardOutput=append:/var/log/myapp.log
StandardError=append:/var/log/myapp.err

[Install]
WantedBy=multi-user.target

启动与查看

sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl status myapp

查看日志(systemd 方式)

journalctl -u myapp -f

✅ 优点:自动重启、日志统一管理


三、日志轮转(防止磁盘爆)

使用 logrotate

sudo vim /etc/logrotate.d/myapp

示例:

/var/log/myapp.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

测试:

logrotate -d /etc/logrotate.d/myapp

四、Golang 日志库优化(很重要)

推荐日志库

  • log/slog(Go 1.21+ 官方)
  • zap(Uber)
  • logrus

示例(slog 写文件)

logger := slog.New(slog.NewTextHandler(os.Stdout, nil))
logger.Info("server started")

配合 systemd 或文件输出即可。


五、进阶:实时监控 & 告警

1. 使用 promtail + loki + grafana

适合微服务 / 多机

Golang → 文件日志 → Promtail → Loki → Grafana

2. 使用 Filebeat + Elasticsearch

企业常用

3. 关键字告警

tail -f /var/log/myapp.log | grep --line-buffered "ERROR" | mail -s "App Error" admin@x.com

六、推荐组合(生产最佳实践)

小项目

  • systemd
  • 文件日志
  • logrotate

中大型

  • systemd
  • zap/slog
  • journald / Loki
  • Grafana 告警

如果你愿意,可以告诉我:

  • Golang 是怎么运行的(裸跑 / Docker / K8s)
  • 日志是 stdout 还是文件
  • 是否需要告警

我可以直接给你一套 可复制的配置

0