docker - Promtail - 基于带有 docker-compose 标签的服务发现和 Grafana 日志浏览器中的标签

标签 docker docker-compose prometheus grafana promtail

我正在玩 Grafana 和 Promtail。我有以下设置:

version: "3.3"

networks:
  loki:

services:
  loki:
    image: grafana/loki:k88-c660a7e
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/local-config.yaml
    networks:
      - loki

  promtail:
    image: grafana/promtail:k88-c660a7e
    volumes:
      - /var/lib/docker/containers:/var/lib/docker/containers
      - /var/run/docker.sock:/var/run/docker.sock
      - ./promtail-config.yaml:/etc/promtail/promtail-config.yaml
    command: -config.file=/etc/promtail/promtail-config.yaml
    networks:
      - loki

  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    volumes:
      - ./grafana-config.yaml:/etc/grafana/provisioning/datasources/default.yaml
    networks:
      - loki

  mycontainer: # Prints debug output to stdout
    build: .
    labels:
      - "mylabel=true"
    networks:
      - loki

我想要实现的目标:

  • 让 Promtail 忽略除具有 mylabel=true
  • 的容器之外的所有其他容器
  • 让 Grafana 在日志浏览器中显示一个以容器名称作为标签的标签

我当前的 promtail-config.yaml 抓取配置:

scrape_configs:
- job_name: containers
  docker_sd_configs:
    - host: unix:///var/run/docker.sock
  relabel_configs: # For some reason this drops all logs
    - source_labels: [__meta_docker_container_label_mylabel]
      regex: "true"
      action: keep
  static_configs:
  - targets:
      - localhost
    labels:
      job: containerlogs
      __path__:  /var/lib/docker/containers/*/*-json.log

  pipeline_stages:
    - docker:

我该如何改变它来实现它?

编辑:这可能会出现 - 对 docker_sd_configs 选项的支持尚未正式发布,但我有 confirmed with a contributor向项目表明它可用并且实际上在他们的云中运行。

最佳答案

使用 filters 进行 docker 标签选择。使用 relabel_configs 根据元值设置额外的标签

server:
  http_listen_address: 0.0.0.0
  http_listen_port: 9080

positions:
  filename: /var/run/promtail/positions.yaml

clients:
  - url: https://[YOUR_LOKI_SERVER_NAME]/loki/api/v1/push
    tenant_id: [YOUR_TENANT_ID]

scrape_configs:
- job_name: containers
  docker_sd_configs:
    - host: unix:///var/run/docker.sock
      refresh_interval: 15s
      filters:
        - name: label
          values: ["mylabel=true"]

  pipeline_stages:
    - docker: {}
    - static_labels:
        job: "promtail"
  relabel_configs:
    - source_labels: ['__meta_docker_container_name']
      regex: '/(.*)'
      target_label: 'container'

关于docker - Promtail - 基于带有 docker-compose 标签的服务发现和 Grafana 日志浏览器中的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71516943/

相关文章:

docker - 如何对Docker进行逆向工程?

openshift - 如何配置 Prometheus 通过暴露的路由获取具有 2 个副本的服务的指标?

docker - 通过 Docker API 将私有(private)镜像推送到 Docker Registry

networking - 在 docker 中使用 netcat 通信两个容器

docker - Traefik/Docker:使用端口作为前端规则(而不是路径或子域)

Prometheus:是否可以在 Prometheus Web UI 中创建/配置警报组?

influxdb - Prometheus 远程读取 influxdb

node.js - 在 GitLab CI 中为 Node.js 应用程序构建 Docker 镜像

amazon-web-services - EC2 Meteor 部署上的 Web 连接被拒绝

docker - Docker + Laravel + Composer