es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Configuración de Promtail para Docker Swarm

Actualmente estoy tratando de configurar la monitorización de registros para un clúster de Docker Swarm utilizando promtail, loki y grafana. El envío de los registros desde promtail hacia loki y la visualización en grafana está funcionando correctamente.

Sin embargo, con mi configuración actual de promtail, todos los registros de contenedores se envían sin agregación a loki. Por lo tanto, mi pregunta sería si alguien conoce una configuración de promtail que envíe los registros de contenedores agregados por el servicio de Docker Swarm al que pertenecen.

El archivo de configuración actual de promtail (config.yml) luce de la siguiente manera:

scrape_configs:
- 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:
    tags:
      stream: prom
      image_name: prom
      container_name: prom
      image_id: prom
      container_id: prom
- output:
    source: output

¡¡Gracias de antemano!!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hola,

    Entiendo que estás intentando configurar el monitoreo de registros para un clúster de Docker Swarm utilizando promtail, Loki y Grafana. Si bien la redirección de registros desde promtail a Loki y la visualización en Grafana funcionan correctamente, te preguntas si hay una configuración de promtail disponible que pueda enviar los registros de contenedores agrupados por el servicio de Docker Swarm al que pertenecen.

    Para responder a tu pregunta, es posible que desees echar un vistazo a la función de etiquetado relabeling de Promtail. Con esta función, puedes modificar las etiquetas de los flujos de registros entrantes, incluido agregar o modificar etiquetas en función de los metadatos relacionados con Docker (por ejemplo, el nombre del servicio de Docker Swarm).

    Aquí tienes un ejemplo de una configuración de promtail que agrupa los registros de contenedores Docker en función del nombre de su servicio Swarm:

    - job_name: swarm-containers
      static_configs:
      - targets:
          - localhost
        labels:
          job: swarm_containers
          __path__: /var/lib/docker/containers/*/*json*
      pipeline_stages:
      - json:
          expressions:
            status: status
            container_id: container_id
            container_name: container_name
            service_id: docker.swarm.service.id
            service_name: docker.swarm.service.name
        # Relabel para tener el nombre del servicio Swarm como flujo de registro, con
        # las variables preservadas.
      - relabel_configs:
        - source_labels: [service_name]
          target_label: stream
        - source_labels: [service_id, container_name, container_id]
          target_label: service_container_id
    

    Observa el uso de la etiqueta de metadatos “docker.swarm.service.name” para agrupar los registros por el nombre de su servicio. Puedes ajustar esta configuración según tu configuración específica y los requisitos de agregación de registros.

    Espero que esto sea de ayuda. ¡Avísame si tienes más preguntas!

Comments are closed.