0x0i.prometheus

logo de ansible

logo de prometheus

Rol de Ansible :fire: :straight_ruler: Prometheus

Galaxy Role Última versión de GitHub Licencia: MIT

Tabla de Contenidos

Rol de Ansible que instala y configura Prometheus: una base de datos de series temporales no distribuida y un conjunto de herramientas de monitoreo y alerta.

Plataformas Soportadas:
* Debian
* Redhat(CentOS/Fedora)
* Ubuntu

Requisitos

Requiere la utilidad unzip/gtar instalada en el host objetivo. Consultar las notas del módulo ansible unarchive para más detalles.

Variables del Rol

Las variables están disponibles y organizadas según las siguientes etapas de provisión de software y máquina:

  • instalación
  • configuración
  • lanzamiento
  • desinstalación

Instalación

prometheus y su alertmanager asociado pueden instalarse usando archivos comprimidos (.tar, .zip), descargados y extraídos de diversas fuentes.

Las siguientes variables se pueden personalizar para controlar varios aspectos de este proceso de instalación, que van desde la versión del software y la ubicación fuente de los binarios hasta el directorio de instalación donde se almacenan:

managed_services: <lista-de-servicios (prometheus | alertmanager)> (por defecto: ['prometheus'])

  • lista de servicios del conjunto de herramientas Prometheus para gestionar a través de este rol

prometheus_user: <nombre-de-usuario-del-servicio> (por defecto: prometheus)

  • usuario y grupo de servicio dedicados utilizados por prometheus para separación de privilegios (ver aquí para detalles)

install_dir: </ruta/al/directorio/de/instalación> (por defecto: /opt/prometheus)

  • ruta en el host objetivo donde se deben extraer los binarios prometheus

archive_url: <ruta-o-url-del-archivo> (por defecto: ver defaults/main.yml)

  • dirección de un archivo comprimido tar o zip que contiene los binarios de prometheus. Este método admite técnicamente la instalación de cualquier versión disponible de prometheus. Los enlaces a versiones oficiales se pueden encontrar aquí.

archive_checksum: <ruta-o-url-del-checksum> (por defecto: ver defaults/main.yml)

  • dirección de un archivo de checksum para verificar la integridad de los datos del archivo prometheus especificado. Aunque se recomienda y generalmente se considera una buena práctica, no es obligatorio especificar un checksum y se puede desactivar proporcionando una cadena vacía ('') como su valor.

checksum_format: <cadena> (por defecto: ver sha256)

  • algoritmo hash utilizado para la verificación de archivos asociado con el checksum del archivo especificado. Consulte aquí para obtener más información sobre checksums/hash criptográficos.

alertmgr_installdir: </ruta/al/directorio/de/instalación> (por defecto: /opt/alertmanager)

  • ruta en el host objetivo donde se deben extraer los binarios de alertmanager

exporter_installdir: </ruta/al/directorio/de/instalación> (por defecto: {{ install_dir }}/exporters)

  • ruta en el host objetivo donde se deben extraer los binarios del exportador de Prometheus

alertmgr_archive_url: <ruta-o-url-del-archivo> (por defecto: ver defaults/main.yml)

  • dirección de un archivo comprimido tar o zip que contiene los binarios de alertmanager. Este método admite técnicamente la instalación de cualquier versión disponible de alertmanager. Los enlaces a versiones oficiales se pueden encontrar aquí.

alertmgr_archive_checksum: <ruta-o-url-del-checksum> (por defecto: ver defaults/main.yml)

  • dirección de un archivo de checksum para verificar la integridad de los datos del archivo alertmanager especificado. Aunque se recomienda y generalmente se considera una buena práctica, no es obligatorio especificar un checksum y se puede desactivar proporcionando una cadena vacía ('') como su valor.

alertmgr_checksum_format: <cadena> (por defecto: ver sha256)

  • algoritmo hash utilizado para la verificación de archivos asociado con el checksum del archivo especificado. Consulte aquí para obtener más información sobre checksums/hash criptográficos.

filesd_path: </ruta/a/archivo-sd> (por defecto: {{ install_dir }}/filesd)

  • ruta en el host objetivo donde se deben almacenar los archivos de descubrimiento de archivos de prometheus por defecto

rules_path: </ruta/a/archivos-de-regla> (por defecto: {{ install_dir }}/rules.d)

  • ruta en el host objetivo donde se deben almacenar los archivos de regla de prometheus por defecto

templates_path: </ruta/a/archivos-de-plantilla-de-alertmanager> (por defecto: {{ alertmgr_installdir }}/templates)

  • ruta en el host objetivo donde se deben almacenar los archivos de plantilla de alertmanager por defecto

Configuración

Usando este rol, la configuración de una instalación de prometheus está organizada según los siguientes componentes:

  • configuración del servicio prometheus (prometheus.yml)
  • descubrimiento de servicio basado en archivos (file_sd - *.[json|yml])
  • reglas de grabación y alerta (rule_files - *.[json|yml])
  • configuración del servicio alertmanager (alertmanager.yml)
  • archivos de plantilla de alertmanager (*.tmpl)

Cada configuración se puede expresar dentro de las siguientes variables para personalizar los contenidos y ajustes de los archivos de configuración designados que se deben generar:

config_dir: </ruta/al/directorio/de/configuración> (por defecto: {{ install_dir }})

  • ruta en el host objetivo donde se deben generar los archivos de configuración de prometheus

data_dir: </ruta/al/directorio/de/datos> (por defecto: /var/data/prometheus)

  • ruta en el host objetivo donde prometheus almacena los datos

alertmgr_configdir: </ruta/al/directorio/de/configuración> (por defecto: {{ alertmgr_installdir }})

  • ruta en el host objetivo donde se deben generar los archivos de configuración de alertmanager

alertmgr_datadir: </ruta/al/directorio/de/datos> (por defecto: /var/data/alertmanager)

  • ruta en el host objetivo donde alertmanager almacena los datos

Configuración del Servicio Prometheus

La configuración del servicio Prometheus se puede expresar dentro de la clave, prometheus_config, que contiene un conjunto de pares clave-valor que representan una de varias secciones que indican diferentes objetivos de scraping (fuentes de las que recolectar métricas), mecanismos de descubrimiento de servicios, conjuntos de reglas de grabación/alerta y configuraciones para interactuar con sistemas de lectura/escritura remotos utilizados por el servicio Prometheus.

Los valores de estas claves son generalmente diccionarios o listas de diccionarios que contienen un conjunto de pares clave-valor que representan especificaciones/configuraciones asociadas (por ejemplo, el intervalo de scraping o frecuencia con la que se recolectan las métricas de forma global) para cada sección. A continuación se proporciona un resumen y ejemplos de configuración de cada una para referencia.

:global

[prometheus_config:] global: <clave: valor,...> (por defecto: ver defaults/main.yml)

  • especifica parámetros que son válidos y sirven como valores predeterminados en todos los demás contextos de configuración. Ver aquí para más detalles.
Ejemplo
 prometheus_config:
   global:
     # Cada cuánto se deben recolectar las métricas por defecto.
     scrape_interval: 15s
     # Cuánto tiempo debe transcurrir antes de que una solicitud de recolección se agote.
     scrape_timeout: 30s
     # Cada cuánto se deben evaluar las reglas.
     evaluation_interval: 30s
     # Las etiquetas a agregar a cualquier serie temporal o alertas al comunicarse con
     # sistemas externos (federación, almacenamiento remoto, Alertmanager).
     external_labels:
       monitor: ejemplo
       foo: bar
:scrape_configs

[prometheus_config:] scrape_configs: <lista-de-diccionarios> (por defecto: ver defaults/main.yml)

  • especifica un conjunto de objetivos y parámetros que describen cómo recolectarlos organizados en trabajos

Los objetivos pueden estar configurados de manera estática o descubiertos dinámicamente utilizando uno de los mecanismos de descubrimiento de servicios soportados. Ver aquí para más detalles y aquí para una lista de los métodos de descubrimiento de servicios soportados.

Ejemplo
 prometheus_config:
   scrape_configs:
     - job_name: ejemplo-estático
       static_configs:
       - targets: ['localhost:9090', 'localhost:9191']
         labels:
           ejemplo: etiqueta
     - job_name: ejemplo-kubernetes
       kubernetes_sd_configs:
       - role: endpoints
         api_server: 'https://localhost:1234'
         namespaces:
           names:
             - default
:rule_files

[prometheus_config:] rule_files: <lista> (por defecto: ver defaults/main.yml)

  • especifica una lista de globs que indican nombres de archivos y rutas

Las reglas y alertas se leen de todos los archivos que coincidan. Las reglas caen en una de dos categorías: grabación y alerta. Ver aquí para obtener detalles sobre las reglas de grabación y aquí para obtener detalles sobre las reglas de alerta.

Ejemplo
 prometheus_config:
   rule_files:
   - "ejemplo.yml"
   - "reglas_ejemplo/*"
:remote_read

[prometheus_config:] remote_read: <lista-de-diccionarios> (por defecto: ver defaults/main.yml)

  • especifica configuraciones relacionadas con la función de lectura remota

Ver aquí para más detalles. Para una lista de los plugins/integraciones de lectura/escritura remota disponibles, consulte este enlace.

Ejemplo
 prometheus_config:
   remote_read:
   - url: http://remoto1/read
     read_recent: true
     name: por_defecto
   - url: http://remoto2/read
     read_recent: false
     name: lectura_especial
     required_matchers:
       job: especial
     tls_config:
       cert_file: archivo_certificado_valido
       key_file: archivo_clave_valido
:remote_write

[prometheus_config:] remote_write: <lista-de-diccionarios> (por defecto: ver defaults/main.yml)

  • especifica configuraciones relacionadas con la función de escritura remota

Ver aquí para más detalles. Para una lista de los plugins/integraciones de escritura/almacenamiento remoto disponibles, consulte este enlace.

Ejemplo
 prometheus_config:
   remote_write:
   - name: descartar_costoso
     url: http://remoto1/push
     write_relabel_configs:
     - source_labels: [__name__]
       regex: costoso.*
       action: drop
   - name: rw_tls
     url: http://remoto2/push
     tls_config:
       cert_file: archivo_certificado_valido
       key_file: archivo_clave_valido
:alerting

[prometheus_config:] alerting: <clave: valor,...> (por defecto: ver defaults/main.yml)

  • especifica configuraciones relacionadas con el Alertmanager además de las instancias de Alertmanager a las que el servidor Prometheus envía alertas

Esta sección proporciona los parámetros para configurar cómo comunicarse con estos Alertmanagers. Los Alertmanagers pueden configurarse de manera estática a través del parámetro static_configs o descubrirse dinámicamente utilizando uno de los mecanismos de descubrimiento de servicios soportados. Ver aquí para más detalles.

Ejemplo
 prometheus_config:
   alerting:
     alertmanagers:
     - scheme: https
       static_configs:
     - targets:
       - "1.2.3.4:9093"
       - "1.2.3.5:9093"

Descubrimiento de Servicios basado en Archivos

El descubrimiento de servicios basado en archivos proporciona una forma más genérica de configurar objetivos estáticos y sirve como una interfaz para conectar mecanismos de descubrimiento de servicios personalizados. Lee un conjunto de archivos que contienen una lista de cero o más <static_config>. Los cambios en todos los archivos definidos se detectan mediante vigilancia de disco y se aplican inmediatamente. Los archivos pueden proporcionarse en formato YAML o JSON. Solo los cambios que resulten en grupos de objetivos bien formados se aplican. Ver aquí para más detalles.

prometheus_file_sd: <lista-de-diccionarios> (por defecto: [])

  • especifica configuraciones de prometheus file_sd para generar

Usando este rol, la configuración de descubrimiento de servicios basada en archivos se puede expresar dentro de la clave, prometheus_file_sd, que contiene una lista de diccionarios que encapsulan la ruta, nombre y contenido de configuración de un conjunto de archivos yaml o json que se cargarán por prometheus para su descubrimiento basado en archivos.

[prometheus_file_sd : <entrada>:] name: <cadena> (por defecto: NINGUNO - requerido)

  • nombre del archivo sd a generar

[prometheus_file_sd : <entrada>:] path: <cadena> (por defecto: {{ install_dir }}/file_sd)

  • ruta del archivo sd a generar

[prometheus_file_sd : <entrada>:] config: <lista-de-diccionarios> (por defecto: NINGUNO - requerido)

  • lista de diccionarios que representan configuraciones de un conjunto de objetivos estáticos que se especificarán en el archivo sd
Ejemplo
 prometheus_file_sd:
 - name: ejemplo-file.slow.json
   config:
   - targets: ["host1:1234"]
     labels:
       test-label: ejemplo-slow-file-sd
 - name: file.yml
   path: /etc/prometheus/file_sd
   config:
   - targets: ["host2:1234"]

NB: Se espera que se incluya una configuración de scraping de file_sd relacionada dentro del archivo prometheus.yml para su carga exitosa.

Archivos de Reglas

Prometheus admite dos tipos de reglas que se pueden configurar y luego evaluar a intervalos regulares: reglas de grabación y reglas de alerta. Las reglas de grabación permiten precomputar expresiones que se necesitan frecuentemente o que son computacionalmente costosas y guardar su resultado como un nuevo conjunto de series temporales. Las reglas de alerta permiten definir condiciones de alerta basadas en expresiones del lenguaje de expresión de Prometheus y enviar notificaciones sobre alertas activadas a un servicio externo. Ver aquí para más detalles.

prometheus_rule_files: <lista-de-diccionarios> (por defecto: [])

  • especifica archivos de reglas de prometheus para generar

Usando este rol, tanto las reglas de grabación como las de alerta se pueden expresar dentro de la clave, prometheus_rule_files, que contiene una lista de diccionarios que encapsulan la ruta, nombre y contenido de configuración de un conjunto de archivos yaml o json que se cargarán por prometheus para la configuración de reglas.

[prometheus_rule_files : <entrada>:] name: <cadena> (por defecto: NINGUNO - requerido)

  • nombre del archivo de regla a generar

[prometheus_rule_files : <entrada>:] path: <cadena> (por defecto: {{ install_dir }}/rules.d)

  • ruta del archivo de regla a generar

[prometheus_rule_files : <entrada>:] config: <lista-de-diccionarios> (por defecto: NINGUNO - requerido)

  • lista de diccionarios que representan configuraciones de un conjunto de grupos de regla que se especificarán en el archivo de regla
Ejemplo
prometheus_rule_files:
- name: ejemplo-reglas.yml
 config:
   groups:
   - name: ejemplo de regla de grabación
     rules:
     - record: job:http_inprogress_requests:sum
       expr: sum(http_inprogress_requests) by (job)
- name: reglas-ejemplo.yml
 path: /etc/prometheus/rules.d
 config:
   groups:
   - name: ejemplo de regla de alerta
     rules:
     - alert: AltaLatenciaDeSolicitud
       expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5
       for: 10m
       labels:
         severity: page
       annotations:
         summary: Alta latencia de solicitud

NB: Se espera que se incluya una sección de rule_files asociada dentro del archivo prometheus.yml para su carga exitosa.

Configuración del Servicio Alertmanager

La configuración del servicio Alertmanager se puede expresar dentro de la clave, alertmanager_config, que contiene un conjunto de pares clave-valor que representan una de varias secciones que indican diferentes rutas, receptores, plantillas y configuraciones de inhibición de alertas.

Los valores de estas claves son generalmente diccionarios o listas de diccionarios que contienen un conjunto de pares clave-valor que representan especificaciones/configuraciones asociadas (por ejemplo, la URL de la API que utilizar para notificaciones de Slack) para cada sección. A continuación se proporciona un resumen y ejemplos de configuración de cada una para referencia.

:global

[alertmanager_config:] global: <clave: valor,...> (por defecto: ver defaults/main.yml)

  • especifica parámetros que son válidos y sirven como valores predeterminados en todos los demás contextos de configuración. Ver aquí para más detalles.
Ejemplo
 alertmanager_config:
   global:
     # El smarthost y el remitente SMTP utilizados para notificaciones por correo.
     smtp_smarthost: 'localhost:25'
     smtp_from: '[email protected]'
     smtp_auth_username: 'alertmanager'
     smtp_auth_password: 'contraseña'
     # El token de autenticación para Hipchat.
     hipchat_auth_token: '1234556789'
     # Host alternativo para Hipchat.
     hipchat_api_url: 'https://hipchat.foobar.org/'
:route

[alertmanager_config:] route: <clave: valor,...> (por defecto: ver defaults/main.yml)

  • define un nodo en un árbol de enrutamiento y sus hijos

Cada alerta ingresa al árbol de enrutamiento en la ruta de nivel superior configurada, que debe coincidir con todas las alertas (es decir, no tener ningún matcher configurado). Luego, atraviesa los nodos hijos. Si continue está configurado como falso, se detiene después del primer hijo que coincida. Si continue es verdadero en un nodo coincidente, la alerta continuará coincidiendo con los hermanos posteriores. Ver aquí para más detalles.

Ejemplo
 alertmanager_config:
   route:
     receiver: 'receptor-por-defecto'
     group_wait: 30s
     group_interval: 5m
     repeat_interval: 4h
     group_by: [cluster, alertname]
     # Todas las alertas que no coincidan con las siguientes rutas hijas
     # permanecerán en el nodo raíz y se enviarán a 'receptor-por-defecto'.
     routes:
       # Todas las alertas con service=mysql o service=cassandra
       # son enviadas al pagador de base de datos.
     - receiver: 'pago-base-datos'
       group_wait: 10s
       match_re:
         service: mysql|cassandra
     # Todas las alertas con la etiqueta team=frontend coinciden con esta subruta.
     # Se agrupan por producto y entorno en lugar de clúster
     # y alertname.
     - receiver: 'pago-frontend'
       group_by: [producto, entorno]
       match:
         team: frontend
:receivers

[alertmanager_config:] inhibit_rules: <lista-de-diccionarios> (por defecto: ver defaults/main.yml)

  • especifica una lista de receptores de notificaciones

Los receptores son configuraciones nombradas de una o más integraciones de notificación. Ver aquí para más detalles.

Ejemplo
 alertmanager_config:
   receivers:
   - name: 'team-X-emails'
     email_configs:
     - to: '[email protected]'
     pagerduty_configs:
     - service_key: <clave-team-X>
     hipchat_configs:
     - auth_token: <token_autenticacion>
       room_id: 85
       message_format: html
       notify: true
:inhibit_rules

[alertmanager_config:] inhibit_rules: <lista-de-diccionarios> (por defecto: ver defaults/main.yml)

  • especifica una lista de reglas de inhibición

Una regla de inhibición silencia una alerta (objetivo) que coincide con un conjunto de matchers cuando existe una alerta (fuente) que coincide con otro conjunto de matchers. Ver aquí para más detalles.

Ejemplo
 alertmanager_config:
   inhibit_rules:
   - source_match:
       severity: 'critical'
     target_match:
       severity: 'warning'
     # Aplicar inhibición si el nombre de alerta es el mismo.
     equal: ['alertname', 'cluster', 'service']
:templates

[alertmanager_config:] templates: <lista> (por defecto: ver defaults/main.yml)

  • especifica archivos y directorios de los cuales se leen las plantillas de notificación

El último componente puede usar un matcher comodín, p. ej., templates/*.tmpl. Ver aquí para una referencia sobre plantillas de notificación y este enlace para ejemplos.

Ejemplo
 alertmanager_config:
   templates:
   - '/etc/alertmanager/template/*.tmpl'

Plantillas de Alertmanager

Prometheus crea y envía alertas al Alertmanager, que luego envía notificaciones a diferentes receptores en función de sus etiquetas. Las notificaciones enviadas a los receptores se construyen a través de plantillas. El Alertmanager viene con plantillas predeterminadas, pero también se pueden personalizar. Ver aquí para más detalles.

alertmanager_templates: <lista-de-diccionarios> (por defecto: [])

  • especifica configuraciones de plantillas de notificación de alertmanager para generar

Usando este rol, la configuración de la plantilla de alertmanager puede expresarse dentro de la clave, alertmanager_templates, que contiene una lista de diccionarios que representan y encapsulan la ruta, nombre y contenido de configuración de un archivo tmpl que se cargará por alertmanager.

[alertmanager_templates : <entrada>:] name: <cadena> (por defecto: NINGUNO - requerido)

  • nombre del archivo de plantilla a generar

[alertmanager_templates : <entrada>:] path: <cadena> (por defecto: {{ alertmgr_installdir }}/templates)

  • ruta del archivo de plantilla a generar

[alertmanager_templates : <entrada>:] config: <lista-de-diccionarios> (por defecto: NINGUNO - requerido)

  • lista de diccionarios que representan configuraciones que indican un conjunto de configuraciones de plantilla a generar
Ejemplo
 alertmanager_templates:
 - name: prueba
   config:
   - define: "myorg.test.guide"
     template: 'https://internal.myorg.net/wiki/alerts/\{\{ .GroupLabels.app \}\}/\{\{ .GroupLabels.alertname \}\}'
 - name: prueba2
   path: /etc/alertmanager/templates
   config:
   - define: "myorg.test.text"
     template: 'resumen: \{\{ .CommonAnnotations.summary \}\}\ndescripción: \{\{ .CommonAnnotations.description \}\}'

NB: Se espera que se incluya una sección de configuración de templates asociada dentro del archivo alertmanager.yml para su carga exitosa.

Lanzamiento

Este rol admite el lanzamiento de todos los componentes del ecosistema de herramientas de monitoreo y alerta de Prometheus. Esto consiste tanto en los servicios Prometheus como en Alertmanager y una miríada de exportadores de métricas. Ejecutar cada uno se logra utilizando la herramienta de administración de servicios systemd que gestiona los servicios como procesos de fondo o demonios sujetos a la configuración y potencial de ejecución proporcionada por su marco de gestión subyacente.

Las siguientes variables se pueden personalizar para gestionar los systemd [Service] configuraciones de unidad y perfil/política de ejecución del servicio:

Prometheus

extra_run_args: <argumentos-cli-prometheus> (por defecto: [])

  • lista de argumentos de línea de comando de prometheus para pasar al binario en tiempo de ejecución para personalizar el lanzamiento.

Apoyando la expresión completa de la cli de prometheus, esta variable permite que el lanzamiento se personalice según la especificación del usuario.

custom_unit_properties: <hash-de-configuraciones-del-servicio-systemd> (por defecto: [])

  • hash de configuraciones utilizadas para personalizar la configuración y entorno de ejecución de la unidad [Service] del servicio systemd de Prometheus.
Alertmanager

extra_alertmgr_args: <argumentos-cli-alertmanager> (por defecto: [])

  • lista de argumentos de línea de comando de alertmanager para pasar al binario en tiempo de ejecución para personalizar el lanzamiento.

Apoyando la expresión completa de la cli de alertmanager, esta variable permite que el lanzamiento se personalice según la especificación del usuario.

custom_alertmgr_properties: <hash-de-configuraciones-del-servicio-systemd> (por defecto: [])

  • hash de configuraciones utilizadas para personalizar la configuración y entorno de ejecución de la unidad [Service] del servicio systemd de Alertmanager.
Exportadores

prometheus_exporters: <lista-de-diccionarios> (por defecto: [])

  • especifica exportadores de prometheus para instalar, lanzar y gestionar como servicios systemd.

Se espera que cada entrada del diccionario del exportador indique varias propiedades, incluyendo nombre; url y dirección de escucha, del exportador objetivo para una correcta configuración y comunicación con un servidor Prometheus. Otras propiedades utilizadas para personalizar la operación del exportador pueden especificarse opcionalmente a través de una variable extra_args, que añade los argumentos de línea de comando proporcionados a la configuración ExecStart de la unidad del exportador. Ver aquí para más detalles y una lista de plugins de exportadores de referencia.

[prometheus_exporters : <entrada>:] name: <cadena> (por defecto: NINGUNO - requerido)

  • nombre del exportador de Prometheus a instalar

[prometheus_exporters : <entrada>:] url: <cadena> (por defecto: NINGUNO - requerido)

  • URL del exportador de Prometheus a instalar

[prometheus_exporters : <entrada>:] description: <cadena> (por defecto: <nombre-exportador>)

  • descripción o documentación del exportador de Prometheus para incluir dentro del archivo de unidad del exportador

[prometheus_exporters : <entrada>:] unit_properties: <hash> (por defecto: {})

  • hash de configuraciones utilizadas para personalizar la configuración y entorno de ejecución de la unidad [Service] del systemd del .
Ejemplo
 prometheus_exporters:
   - name: node_exporter
     url: https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
     description: https://github.com/prometheus/node_exporter
     unit_properties:
       User: exporter
       Group: exporter
     extra_args:
       - '--web.listen-address=0.0.0.0:9110'
       - '--log.level=debug'

Desinstalación

El soporte para desinstalar y eliminar artefactos necesarios para la provisión permite a los usuarios/operadores devolver un host objetivo a su estado configurado antes de la aplicación de este rol. Esto puede ser útil para reciclar nodos y roles y tal vez proporcionar transiciones más suaves/gestionadas entre las actualizaciones de herramientas.

Las siguientes variable(s) se pueden personalizar para gestionar este proceso de desinstalación:

perform_uninstall: <true | false> (por defecto: false)

  • si se debe desinstalar y eliminar todos los artefactos y remanentes de esta instalación de prometheus en un host objetivo (ver: handlers/main.yml para detalles)

Dependencias

  • 0x0i.systemd

Ejemplo de Playbook

ejemplo por defecto:

- hosts: all
  roles:
  - role: 0x0I.prometheus

sólo instalar y gestionar el servicio Prometheus (desactivar la configuración del alertmanager):

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      managed_services: ['prometheus']

instalar una versión específica de Prometheus:

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      archive_url: https://github.com/prometheus/prometheus/releases/download/v2.15.0/prometheus-2.15.0.linux-amd64.tar.gz
      archive_checksum: 1c2175428e7a70297d97a30a04278b86ccd6fc53bf481344936d6573482203b4

ajustar los directorios de instalación, configuración y datos de Prometheus y Alertmanager:

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      install_dir: /usr/local
      config_dir: /etc/prometheus
      data_dir: /var/lib/prometheus
      alertmgr_installdir: /usr/local
      alertmgr_configdir: /etc/alertmanager
      alertmgr_datadir: /var/lib/alertmanager

personalizar la configuración de scraping y evaluación global:

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      prometheus_config:
        global:
          scrape_interval: 30s
          scrape_timeout: 30s
          evaluation_interval: 30s

personalizar la configuración de alerta/alertmanager de prometheus:

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      prometheus_config:
        alerting:
          alertmanagers:
          - scheme: https
            static_configs:
            - targets:
              - "1.2.3.4:9093"

crear reglas de grabación y alerta:

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      prometheus_config:
        rule_files:
        - /etc/prometheus/rules.d/*
      prometheus_rule_files:
      - name: ejemplo-reglas.yml
        path: /etc/prometheus/rules.d/*
        config:
          groups:
            - name: ejemplo de regla de grabación
              rules:
                - record: job:http_inprogress_requests:sum
                  expr: sum(http_inprogress_requests) by (job)
      - name: otro-ejemplo.yml
        path: /etc/prometheus/rules.d
        config:
          groups:
            - name: ejemplo de regla de alerta
              rules:
                - alert: AltaLatenciaDeSolicitud
                  expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5
                  for: 10m
                  labels:
                    severity: page
                  annotations:
                    summary: Alta latencia de solicitud

configuración de scraping de objetivo estático con sobreescrituras de configuración de scraping y evaluación:

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      prometheus_config:
        scrape_configs:
        - job_name: ejemplo-estático
           static_configs:
           - targets: ['localhost:9090', 'localhost:9191']
             labels:
               my:   label
               your: label
          scrape_interval: 10s
          scrape_timeout: 10s
          evaluation_interval: 10s

configuración de scraping de file_sd con sobreescrituras de configuración de scraping y evaluación:

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      prometheus_config:
        scrape_configs:
        - job_name: ejemplo-file-sd
            file_sd_configs:
            - files:
              - foo/*.slow.json
              - single/file.yml
              refresh_interval: 10m
            - files:
             - bar/*.yml
      prometheus_file_sd:
      - name: ejemplo-file.slow.json
        path: foo
        config:
        - targets: ["host1:1234"]
          labels:
            test-label: ejemplo-slow-file-sd
      - name: foo.yml
        path: bar
        config:
        - targets: ["host2:1234"]
      - name: file.yml
        path: single
        config:
        - targets: ["host3:1234"]

configuración de scraping basada en dns:

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      prometheus_config:
        scrape_configs:
        - job_name: ejemplo-dns
          dns_sd_configs:
          - refresh_interval: 15s
            names:
            - primera.direccion.dns.dominio.com
            - segunda.direccion.dns.dominio.com
          - names:
            - tercera.direccion.dns.dominio.com

configuración de scraping de kubernetes con TLS y configuración de autenticación básica:

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      prometheus_config:
        scrape_configs:
        - job_name: ejemplo-kubernetes
          kubernetes_sd_configs:
          - role: endpoints
            api_server: 'https://localhost:1234'
            tls_config:
              cert_file: archivo_certificado_valido
              key_file: archivo_clave_valido
            basic_auth:
              username: 'miusuario'
              password: 'micontraseña'

configuración de scraping de ec2:

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      prometheus_config:
        scrape_configs:
        - job_name: ejemplo-ec2
          ec2_sd_configs:
          - region: us-east-1
            access_key: acceso
            secret_key: micontraseña
            profile: perfil
            filters:
            - name: tag:environment
              values:
              - prod
            - name: tag:service
              values:
              - web
              - db

configuración de scraping de openstack:

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      prometheus_config:
        scrape_configs:
        - job_name: ejemplo-openstack
          openstack_sd_configs:
          - role: instance
            region: RegionOne
            port: 80
            refresh_interval: 1m

configuración de scraping de azure:

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      prometheus_config:
        scrape_configs:
        - job_name: ejemplo-azure
          azure_sd_configs:
    -       environment: AzurePublicCloud
            authentication_method: OAuth
            subscription_id: 11AAAA11-A11A-111A-A111-1111A1111A11
            tenant_id: BBBB222B-B2B2-2B22-B222-2BB2222BB2B2
            client_id: 333333CC-3C33-3333-CCC3-33C3CCCCC33C
            client_secret: micontraseña
            port: 9100

configuración de scraping de marathon:

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      prometheus_config:
        scrape_configs:
        - job_name: ejemplo-marathon
          marathon_sd_configs:
          - servers:
            - 'https://marathon.ejemplo.com:443'
            auth_token: "micontraseña"

configuración de scraping de consul:

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      prometheus_config:
        scrape_configs:
        - job_name: ejemplo-consul
          consul_sd_configs:
          - server: 'localhost:1234'
            token: micontraseña
            services: ['nginx', 'cache', 'mysql']
            tags: ["canary", "v1"]
            node_meta:
              rack: "123"
            allow_stale: true
            scheme: https

Licencia

MIT

Información del Autor

Este rol fue creado en 2019 por O1.IO.

Acerca del proyecto

Prometheus - a multi-dimensional time-series data monitoring and alerting toolkit

Instalar
ansible-galaxy install 0x0i.prometheus
Licencia
Unknown
Descargas
923
Propietario