0x0i.prometheus
Rol de Ansible :fire: :straight_ruler: Prometheus
Tabla de Contenidos
- Plataformas Soportadas
- Requisitos
- Variables del Rol
- Dependencias
- Ejemplo de Playbook
- Licencia
- Información del Autor
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 deprometheus
. 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 dealertmanager
. 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.
Prometheus - a multi-dimensional time-series data monitoring and alerting toolkit
ansible-galaxy install 0x0i.prometheus