温馨提示×

centos怎样监控golang日志

小樊
34
2026-10-06 01:44:52
栏目: 编程语言

在 CentOS 上监控 Go (Golang) 程序日志,常见做法分为几类:系统级日志、应用日志文件监控、实时查看、集中化监控。下面按实际使用场景给你一个较完整的方案。


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

1. 如果 Go 程序输出到文件

假设你程序日志写在:

/var/log/myapp/app.log

实时查看:

tail -f /var/log/myapp/app.log

查看最近 100 行:

tail -n 100 /var/log/myapp/app.log

2. 如果 Go 程序输出到 stdout(常见)

用 systemd 管理(推荐)

Go 程序通常这样跑:

sudo systemctl status myapp

查看实时日志:

journalctl -u myapp -f

查看最近 200 行:

journalctl -u myapp -n 200

✅ 优点:不用自己管理日志文件,CentOS 7+ 原生支持


二、Go 程序日志规范(很重要)

推荐日志库

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

示例(zap):

logger, _ := zap.NewProduction()
logger.Info("server started", zap.String("port", "8080"))

输出 JSON,方便后续采集。


三、日志轮转(避免磁盘爆掉)

使用 logrotate(CentOS 自带)

编辑:

sudo vim /etc/logrotate.d/myapp

示例:

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

测试:

sudo logrotate -d /etc/logrotate.d/myapp

四、进阶:实时监控 + 告警

1. 关键字监控(简单实用)

例如监控 ERROR:

tail -f /var/log/myapp/app.log | grep --line-buffered ERROR

或写脚本发邮件/钉钉。


2. 使用 Prometheus + Grafana(生产推荐)

方案

  • Go 程序暴露 metrics
  • node_exporter / loki 收集日志
  • Grafana 展示

Go 暴露日志指标(示例)

prometheus.MustRegister(errorCounter)
errorCounter.Inc()

组件

  • Prometheus:指标
  • Loki:日志(轻量)
  • Grafana:统一看板

五、集中式日志(多台服务器)

常见组合

  • Filebeat + ELK
  • Fluent Bit + Loki
  • rsyslog + Kafka

示例(Filebeat):

filebeat.inputs:
- type: log
  paths:
    - /var/log/myapp/*.log
output.elasticsearch:
  hosts: ["http://es:9200"]

六、推荐组合(按规模)

场景 推荐方案
单机小项目 systemd + journalctl
中型服务 日志文件 + logrotate
生产环境 Loki / ELK
微服务 Prometheus + Grafana

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

  • Go 程序怎么运行的(systemd / docker / k8s)
  • 日志现在输出在哪
  • 是否需要告警

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

0 踩