背景: 日志格式不统一,节点多不好其中排查,容易丢失,占用磁盘
因此:
- 服务1 ──┐
- 服务2 ──┼→ Fluent Bit → 云端
- 服务3 ──┘
用途 fluent-bit 负责接收,处理,转发日志,可以定义一个服务网 fluent 写入日志,同时通过 fluent-bit 的配置文件,转发日志。如下: //安装 fluent-bit
brew install fluent-bit
//fluent-bit.conf
[SERVICE]
Flush 5
Daemon Off
Log_Level info
[INPUT]
Name forward
Listen 0.0.0.0
Port 24224
unix_path /tmp/fluent.sock
[FILTER]
Name modify
Match *
Add hostname ${HOSTNAME}
Add service go-web-service
[OUTPUT]
Name stdout
Match *
Format json_lines
//启动 fluent-bit
fluent-bit -c fluent-bit.conf
// go 写入日志的代码
import "github.com/go-kratos/kratos/contrib/log/fluent/v2"
...
...
...
fluentLogger, err := fluent.NewLogger("unix:///tmp/fluent.sock")
if err != nil {
fmt.Fprintf(os.Stderr, "⚠️ Fluent 不可用: %v\n", err)
logger = log.NewStdLogger(os.Stdout)
} else {
fmt.Println("✅ Fluent logger 已连接到 /tmp/fluent.sock")
logger = fluentLogger
}
logger.Log(log.LevelFatal, "hello world++++", "123")
//启动 go 服务,可以看到日志进入了 fluent-bit