菜单
开源

Fluent Bit Loki 输出插件

Fluent Bit 是一个快速轻量级的日志和指标处理器及转发器,可以通过配置Fluent-bit Loki 输出插件将日志发送到 Loki。

您可以使用 TailStdin 数据管道输入定义要收集的日志文件。此外,Fluent Bit 支持多种 FilterParser 插件(例如 KubernetesJSON 等)来结构化和修改日志行。

注意

Fluent Bit 有两个用于 Loki 的插件:官方维护的插件 lokigrafana-loki 插件。我们推荐使用本页面描述的 loki 插件,因为它由 Fluent Bit 项目官方维护。

有关更多信息,请参阅 Fluent Bit Loki 输出插件文档。请注意,grafana-loki 插件不再积极维护。

配置

Fluent Bit Loki 输出插件的所有配置选项均在Fluent Bit Loki 输出插件文档中进行详细说明。

以下是将 Fluent Bit 连接到 Grafana Cloud 上托管的 Loki 的通用示例

conf
    [OUTPUT]
        Name        loki
        Match       *
        Host        YourHostname.company.com
        port        443
        tls         on
        tls.verify  on
        http_user   XXX
        http_passwd XXX

Hosthttp_userhttp_passwd 替换为您的 Grafana Cloud Loki 端点和凭据。

使用示例

以下是使用 Fluent Bit 向 Loki 发送日志的一些示例。

Tail Docker 日志

以下是在 Docker 容器中运行 Fluent Bit、收集 Docker 日志并将其发送到本地 Loki 实例的示例。

bash
docker run -v /var/lib/docker/containers:/var/lib/docker/containers fluent/fluent-bit:latest /fluent-bit/bin/fluent-bit -i tail -p Path="/var/lib/docker/containers/*/*.log" -p Parser=docker -p Tag="docker.*"  -o loki -p host=loki -p port=3100 -p labels="agent=fluend-bit,env=docker"

在此示例中,我们使用 tail 输入插件收集 Docker 日志,并使用 loki 输出插件将日志发送到 Loki。请注意,建议使用配置文件来定义输入和输出插件。-p 标志用于将配置参数传递给插件。

配置文件(命令行参数的替代方案)

创建一个名为 fluent-bit.conf 的配置文件,其内容如下

conf
[INPUT]
    Name   tail
    Path   /var/lib/docker/containers/*/*.log
    Parser docker
    Tag    docker.*

[OUTPUT]
    Name   loki
    Match  *
    Host   loki
    Port   3100
    Labels agent=fluend-bit,env=docker

使用配置文件运行 Fluent Bit

bash
docker run -v /var/lib/docker/containers:/var/lib/docker/containers -v $(pwd)/fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf fluent/fluent-bit:latest /fluent-bit/bin/fluent-bit -c /fluent-bit/etc/fluent-bit.conf

收集 Docker 事件

以下是在 Docker 容器中运行 Fluent Bit、收集 Docker 事件并将其发送到本地 Loki 实例的示例。

bash
docker run -v /var/run/docker.sock:/var/run/docker.sock fluent/fluent-bit:latest /fluent-bit/bin/fluent-bit -i docker_events -o loki -p host=loki -p port=3100 -p labels="agent=fluend-bit,env=docker"

在此示例中,我们使用 docker_events 输入插件收集 Docker 事件,并使用 loki 输出插件将日志发送到 Loki。请注意,建议使用配置文件来定义输入和输出插件。-p 标志用于将配置参数传递给插件。

配置文件(命令行参数的替代方案)

创建一个名为 fluent-bit.conf 的配置文件,其内容如下

conf
[INPUT]
    Name   docker_events

[OUTPUT]
    Name   loki
    Match  *
    Host   loki
    Port   3100
    Labels agent=fluent-bit,env=docker

使用配置文件运行 Fluent Bit

bash
docker run -v /var/run/docker.sock:/var/run/docker.sock -v $(pwd)/fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf fluent/fluent-bit:latest /fluent-bit/bin/fluent-bit -c /fluent-bit/etc/fluent-bit.conf

收集 Kubernetes 日志

从 Kubernetes 收集日志并使用 Fluent Bit 的推荐方法是使用 Fluent Bit 项目提供的 Helm chart。该 Helm chart 可在 https://github.com/fluent/helm-charts 获取。

以下是部署 Fluent Bit Helm chart 以从 Kubernetes 收集日志并将其发送到 Loki 的示例

  1. 添加 Fluent Bit Helm 仓库

    bash
    helm repo add fluent https://fluent.github.io/helm-charts
  2. 创建一个名为 values.yaml 的文件,其内容如下

    yaml
    config:
        outputs: |
            [OUTPUT]
                Name        loki
                Match       *
                Host        YourHost.Company.net
                port        443
                tls         on
                tls.verify  on
                http_user   XXX
                http_passwd XXX
                Labels agent=fluend-bit
    
    Note we are only updating the `outputs` section of the Fluent Bit configuration. This is to replace the default output plugin with the Loki output plugin. If you need to update other parts of the Fluent Bit configuration refer to the [Fluent Bit values file reference](https://github.com/fluent/helm-charts/blob/main/charts/fluent-bit/values.yaml).
  3. 部署 Fluent Bit Helm chart

    bash
    helm install fluent-bit fluent/fluent-bit -f values.yaml

后续步骤