Ampliación de la configuración de PMM Prometheus – Blog de rendimiento de base de datos de Percona

Percona Monitoring and Management 2.4.0 (PMM), lanzado hace varios días, agrega soporte para extensiones de archivo de configuración personalizadas de Prometheus. Antes de explicar qué es y cómo usarlo, déjame contarte un poco sobre la historia.

PMM 1.4.0, lanzado hace 2,5 años, ha agregado compatibilidad para atacar exportadores externos de Prometheus en el archivo de configuración de Prometheus de PMM. Ha sido bastante difícil de implementar. Posteriormente se guardó la información de los servicios de monitoreo en Consul, y el archivo de configuración Prometheus prometheus.yml contenido consul_sd_config sección a utilizar. No podíamos usar el mismo mecanismo para almacenar la configuración de los exportadores externos porque no era lo suficientemente flexible; por ejemplo, no había espacio para guardar intervalos de raspado personalizados o credenciales de autenticación basadas en HTTP. Al mismo tiempo, no pudimos mover la información de los servicios de monitoreo fuera de la consola porque pmm-admin confiaba en que estuviera allí. Así que algunos clientes dependen del manual prometheus.yml cambios que deben mantenerse en las actualizaciones del servidor PMM, incluidos los comentarios y sus ubicaciones, una característica que no era compatible con nuestra biblioteca de analizador YAML. Al final, decidimos agregarlo y eliminarlo. scrape_configs secciones para exportadores externos a través de un analizador de texto y una plantilla simple basada en expresiones regulares. Como puede imaginar, parchear un archivo de configuración YAML con expresiones regulares no es el enfoque más estable; de hecho, lo rompimos solo una vez al reemplazar las pestañas con espacios. Entonces, mientras diseñamos PMM 2.0, decidimos que la configuración de Prometheus será completamente administrada por el componente PMM Server llamado pmm-managed; su base de datos (llamada base de datos de inventario) es la única fuente de información y las ediciones manuales no son compatibles para evitar los problemas anteriores.

Extensibilidad de la configuración de Prometheus

Por supuesto, entendemos que la extensibilidad de la configuración de Prometheus es una característica muy deseada por muchos de nuestros usuarios, y nos complace anunciar la primera iteración de la misma. Mientras se genera prometheus.yml archivo, pmm-managed ahora verifica si hay un archivo con una ruta fija /srv/prometheus/prometheus.base.yml. Si se puede leer y analizar, la mayor parte de la información se almacena y utiliza en la configuración generada: global la sección se conserva si está presente, scrape_configs y rule_files las matrices se unen y alerting, remote_write, y remote_read los parámetros se mantienen como. Por ejemplo, le permite usar almacenamiento a largo plazo para datos de Prometheus como VictoriaMetrics agregando lo siguiente al archivo base:

Aquí agregamos el almacenamiento de VictoriaMetrics que se ejecuta en 1.2.3.4:8428 a través de escritura_remota. También tenemos un monitor para esto. Luego, debemos decirle a pmm-managed que genere un nuevo archivo combinado. La forma más fácil de hacer esto es usar nuestra API de parámetros de cambio con un cuerpo vacío:

Normalmente, esa API se usa para actualizar los valores de configuración del servidor PMM, como el intervalo de retención de datos, pero también hace que pmm-managed regenere el archivo de configuración de Prometheus y lo vuelva a cargar si es necesario. Después de ejecutar este comando, verá un cambio en él. /etc/prometheus.yml.

Ahora puede que se pregunte por qué dije que se conserva la «mayor parte» de la configuración del archivo base. Durante la implementación de esta función, usamos el código fuente de Prometheus para el analizador de configuración. Desafortunadamente, está estrechamente relacionado con sus mecanismos de descubrimiento de servicios que incluyen Kubernetes, y la lista de dependencias de Kubernetes es más grande que el resto de PMM. Así que decidimos dejar algunas cosas fuera de este lanzamiento. En particular, todos los mecanismos de descubrimiento de servicios excepto static_configs no son compatibles. En la próxima versión, usaremos nuestro propio código para el analizador de configuración. Es una biblioteca Go separada que puede ser útil para la comunidad.

Ah, y que busca reintroducir sus propios exportadores externos que se pueden sumar pmm-admin? Venanu; No puedo comentar cuándo se enviarán exactamente, pero ocupan un lugar destacado en nuestra lista de prioridades. prometheus.base.yml es solo el primer paso.

Author: Ing. Luis

A lo largo de conocer Windows y otros sistemas operativos me eh encontrado con diversos tipos de error, ahora brindo soluciones según mi experiencia-

Deja un comentario