Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.1K
Vistas
Configuración de Prometheus de recarga en vivo en docker (-compose)

Tengo un nuevo servidor que ejecuta Prometheus en docker-compose. Quiero poder volver a cargar el archivo de configuración (prometheus.yml) sin tener que detener e iniciar el contenedor.

Por supuesto, dado que persisto en el almacenamiento de promethues en un volumen, detener e iniciar no es realmente un problema, pero parece excesivo, especialmente porque Prometheus tiene una API tan útil para recargar configuraciones.

Veo a otras personas con preguntas similares (por ejemplo , aquí ) pero no he podido hacer que esas soluciones funcionen para mí. Tal vez estoy pasando por alto algo allí.

docker-compose.yml

 version: "3" services: grafana: restart: always container_name: grafana image: grafana/grafana:6.2.1 ports: - 3000:3000 volumes: - grafanadata:/var/lib/grafana prometheus: restart: always container_name: prometheus image: prom/prometheus:v2.10.0 privileged: true volumes: - ./configuration/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml - prometheusdata:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--web.enable-admin-api' - '--web.enable-lifecycle' ports: - 9090:9090 node: restart: always container_name: node image: prom/node-exporter:v0.18.0 ports: - 9100:9100 volumes: grafanadata: prometheusdata:

Por desgracia, mis resultados ..

Cuando ejecuto curl -X POST http://localhost:9090/-/reload , los registros de docker-compose dan:

 prometheus | level=info ts=2019-06-17T15:33:02.690Z caller=main.go:730 msg="Loading configuration file" filename=/etc/prometheus/prometheus.yml prometheus | level=info ts=2019-06-17T15:33:02.691Z caller=main.go:758 msg="Completed loading of configuration file" filename=/etc/prometheus/prometheus.yml

Así que el final de Prometheus está funcionando bien... Todo bien hasta ahora.

Sin embargo, cuando edito ./configuration/prometheus/prometheus.yml , los cambios no se propagan al contenedor. Además, cuando trato de editar /etc/promethus/prometheus.yml en el contenedor, veo que es de solo lectura (y aparte, el contenedor no tiene un comando 'sudo').

¿Existe una forma nativa de docker para recargar en vivo/en vivo estos archivos de configuración en el directorio del contenedor?

Como se indicó, la opción de inicio/inicio funciona por ahora, pero tengo curiosidad por saber si hay una solución más elegante.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

docker-compose kill -s SIGHUP prometheus hace el truco, por lo que Vishrant ciertamente estaba en algo allí.

over 4 years ago · Santiago Trujillo Denunciar

0

Su problema podría ser que su editor no está guardando el archivo modificado en el mismo inodo. Entonces, dockerd no se da cuenta de que el archivo cambió, ya que está escrito en un nuevo inodo. Las soluciones pueden ser montar el directorio completo o decirle a su editor que no use un archivo temporal:

Es decir, para Sublime, configurar "atomic_save": falso para las preferencias del usuario podría ayudar (los resultados no están claros) o para vim, consulte https://github.com/moby/moby/issues/15793#issuecomment-571932545

Este tema es muy interesante para este tema en general: https://github.com/moby/moby/issues/15793

over 4 years ago · Santiago Trujillo Denunciar

0

Asumiré que ya ha actualizado el archivo /etc/prometheus/prometheus.yml y solo está preguntando sobre la recarga de la configuración. (Aunque la configuración puede ser parte del mapa de configmap , y puede evitar que el pod se reinicie cuando cambia el configmap de configuración).

Ejecute el siguiente comando para volver a cargar la configuración sin detener el proceso de Prometheus:

 docker exec <prometheus_container_name> sudo killall -HUP prometheus

Explicación: el comando sudo killall -HUP prometheus envía una señal SIGHUP al proceso de prometheus para recargar las configuraciones.

Valide los cambios llamando al:

 curl -X GET http://localhost:9090/api/v1/status/config
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda