ELK是CentOS上最流行的日志分析可视化方案,适合大规模、结构化日志处理。
logrus或zap等结构化日志库(如JSON格式),将日志输出到文件或stdout(通过systemd捕获)。例如,logrus配置JSON格式:log := logrus.New()
log.SetFormatter(&logrus.JSONFormatter{})
log.WithFields(logrus.Fields{"animal": "walrus", "size": 10}).Info("A walrus appears")
systemd服务文件将Golang应用日志写入/var/log/myapp.log,再配置Logstash读取该文件(/etc/logstash/conf.d/myapp.conf):input { file { path => "/var/log/myapp.log" start_position => "beginning" } }
output { elasticsearch { hosts => ["localhost:9200"] index => "myapp-logs" } }
Elasticsearch(存储索引)、Logstash(处理日志)、Kibana(Web界面),通过Kibana创建仪表板,搜索、分析日志(如按级别、字段过滤)。适用于云原生或轻量级场景,与Prometheus生态集成良好。
yum安装Loki(日志聚合系统),配置Golang日志发送到Loki(如通过promtail采集/var/log/myapp.log)。LogQL(类似SQL的查询语言)查询日志,创建仪表板展示日志趋势、错误统计等。prometheus/client_golang库将Golang应用指标(如请求延迟、错误数)暴露给Prometheus。适合开发者在CentOS终端快速查看、过滤JSON日志,无需Web界面。
go install安装:go install github.com/yourusername/loggo@latest。./my-golang-app | loggo stream
level=error过滤)、导航日志条目,模板定制显示字段(如仅显示timestamp和message)。适合分析Golang应用的访问日志(如Nginx反向代理后的日志),生成HTML报表。
sudo yum install -y goaccess。combined格式(需调整logrus或zap输出格式),运行:goaccess /var/log/myapp.access.log --log-format=COMBINED -o /var/www/html/report.html
http://centos-ip/report.html,查看实时访问统计(如PV、UV、请求路径分布)。防止日志文件过大影响可视化工具性能,使用logrotate管理Golang日志。
/etc/logrotate.d/myapp文件:/var/log/myapp.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
以上方法覆盖了从终端到Web的不同可视化需求,可根据Golang应用的规模(如单体/分布式)、场景(如开发调试/生产监控)选择合适的方案。