【问题标题】:Promtail Config for Docker SwarmDocker Swarm 的 Promtail 配置
【发布时间】:2022-06-20 07:48:15
【问题描述】:

我目前正在尝试使用 promtail、loki 和 grafana 为 docker swarm 集群设置日志监控。从 promtail 到 loki 的日志转发以及 graphana 中的可视化都运行良好。

但是,在我当前的 promtail 配置下,所有容器日志都会以未聚合的方式发送到 loki。因此,我的问题是,如果有人知道 promtail 配置,它发送由他们所属的 docker swarm 服务聚合的容器日志?

当前的 promtail config.yml 如下所示:

- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs_prom
      __path__: /var/log/*log

- job_name: containers
  static_configs:
  - targets:
      - localhost
    labels:
      job: containerlogs_prom
      __path__: /var/lib/docker/containers/*/*log

  pipeline_stages:
  - json:
      expressions:
        output: log
        stream: stream
        attrs:
  - json:
      expressions:
        tag:
      source: attrs
  - regex:
      expression: (?P<image_name>(?:[^|]*[^|])).(?P<container_name>(?:[^|]*[^|])
).(?P<image_id>(?:[^|]*[^|])).(?P<container_id>(?:[^|]*[^|]))
      source: tag
  - timestamp:
      format: RFC3339Nano
      source: time
  - labels:
      tag_prom:
      stream_prom:
      image_name_prom:
      container_name_prom:
      image_id_prom:
      container_id_prom:
  - output:
      source: output

提前致谢!!

【问题讨论】:

    标签: docker docker-swarm grafana-loki promtail


    【解决方案1】:

    我发现您可以使用 Docker driver 代替 Promtail。您可以通过以下方式轻松安装它:

    $ docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
    

    并验证安装:

    docker plugin ls
    

    然后你可以配置为使用default logging configuration的所有容器使用loki日志驱动:

    {
        "debug" : true,
        "log-driver": "loki",
        "log-opts": {
            "loki-url": "https://<user_id>:<password>@logs-us-west1.grafana.net/loki/api/v1/push",
            "loki-batch-size": "400"
        }
    }
    

    从文档中,我不确定在这种情况下日志是否也保存在本地主机上,但如果您只是将日志驱动程序手动设置到 docker-compose.yml 文件中,它将被发送到 Loki 和也保存在本地主机上。来自documentation

    version: "3.7"
    services:
      logger:
        image: grafana/grafana
        logging:
          driver: loki
          options:
            loki-url: "https://<user_id>:<password>@logs-prod-us-central1.grafana.net/loki/api/v1/push"
    

    此配置还保留堆栈和服务名称:

    每个 swarm 服务的堆栈名称和服务名称以及每个 compose 服务的项目名称和服务名称都会自动发现并作为 Loki 标签发送,这样您就可以在 Grafana 中按它们进行过滤。

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-24
      • 2016-11-28
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      相关资源
      最近更新 更多