CentOS上Golang日志分析工具与方案
一 系统自带与轻量工具
二 日志库与输出规范(便于后续分析)
三 集中式日志平台
四 快速上手示例与命令
使用 logrus + lumberjack 写入结构化日志(便于后续分析/检索):
package main
import (
"github.com/sirupsen/logrus"
"gopkg.in/natefinch/lumberjack.v2"
)
func main() {
logrus.SetFormatter(&logrus.JSONFormatter{
TimestampFormat: "2006-01-02T15:04:05Z07:00",
})
logrus.SetLevel(logrus.InfoLevel)
logWriter := &lumberjack.Logger{
Filename: "/var/log/myapp/app.log",
MaxSize: 10, // MB
MaxBackups: 7,
MaxAge: 28, // days
Compress: true,
}
logrus.SetOutput(logWriter)
logrus.WithFields(logrus.Fields{
"module": "order",
"user": "alice",
}).Info("order created")
}
使用 GoAccess 分析 Nginx/Apache 访问日志并生成 HTML 报告:
# 安装依赖
sudo yum install -y glib2 glib2-devel GeoIP-devel ncurses-devel zlib zlib-devel gcc
# 编译安装 GoAccess(启用 GeoIP 与 UTF-8)
cd /usr/local/src
wget http://tar.goaccess.io/goaccess-0.8.1.tar.gz
tar xzvf goaccess-0.8.1.tar.gz
cd goaccess-0.8.1
./configure --enable-geoip --enable-utf8
make && sudo make install
# 分析并导出 HTML 报告
goaccess -f /var/log/nginx/access.log -c -a > /var/www/html/report.html
五 选型建议