在 Debian 上“远程看 Golang 日志”,常见有几种方案,从最简单到最专业给你梳理一下,你可以按需求选。
如果 Golang 程序日志输出到文件或 stdout:
ssh user@debian_ip
tail -f /var/log/myapp.log
或 systemd 管理的服务:
ssh user@debian_ip
journalctl -u myapp.service -f
✅ 优点:零额外组件
❌ 缺点:只能一台一台看
Golang 程序一般日志来源:
log.Printlnzap / logrus / slog/var/log/myapp.log)建议:
systemd 管理服务服务端(收集日志的 Debian)
apt install rsyslog
/etc/rsyslog.conf
module(load="imudp")
input(type="imudp" port="514")
重启:
systemctl restart rsyslog
客户端(Golang 所在机器)
*.* @logserver_ip:514
✅ 适合少量机器
❌ 功能有限
架构:
Golang -> promtail -> Loki -> Grafana
1. 安装 Loki + Grafana
docker compose up -d
2. promtail 配置
scrape_configs:
- job_name: golang
static_configs:
- targets: [localhost]
labels:
job: golang
__path__: /var/log/myapp/*.log
✅ 支持搜索、标签、远程访问
✅ 非常适合 Go 微服务
适合:
❌ 资源消耗高
使用 slog(Go 1.21+):
logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))
logger.Info("server started", "port", 8080)
方便:
| 场景 | 推荐 |
|---|---|
| 临时排查 | SSH + tail |
| 单服务 | systemd + journalctl |
| 多服务 | Loki + Grafana |
| 企业级 | ELK |
如果你愿意,可以告诉我:
我可以直接帮你写具体配置。