Fluent-Bit 日志处理器

42 阅读1分钟

背景: 日志格式不统一,节点多不好其中排查,容易丢失,占用磁盘

因此:

  • 服务1 ──┐
  • 服务2 ──┼→ Fluent Bit → 云端
  • 服务3 ──┘

image.png

用途 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

image.png