opstree_devops.alertmanager
Rol de Ansible: osm_alertmanager
Alertmanager es una herramienta que maneja las alertas enviadas por Prometheus. Recibe las alertas del servidor de Prometheus y agrupa las alertas en base a etiquetas. Luego, reenvía las alertas a diferentes receptores como Email, PagerDuty y Slack.
Alertmanager se configura usando banderas de línea de comandos y un archivo de configuración. Mientras que la línea de comandos configura parámetros del sistema, el archivo de configuración contiene información como receptores y rutas.
Historial de Versiones
Fecha | Versión | Descripción | Cambiado Por |
---|---|---|---|
Mayo 2020 | v0.0.1 | Borrador Inicial | Abhishek Dubey |
Julio 2020 | v0.1.0 | Integración de Slack y Google Chat | Mahesh Kumar |
Junio 2022 | v0.1.1 | Soporte para clúster, reglas personalizadas de alertmanager, plantillas, integración de AWS SNS y PagerDuty | Ishaan Ambashta |
Sistemas Operativos Soportados
- CentOS:7
- CentOS:6
- Ubuntu:bionic
- Ubuntu:focal
Dependencias
- prometheus-server
- libselinux-python
Requisitos
No hay requisitos específicos para ejecutar este rol. Este rol es independiente de la plataforma para CentOS 6 o superior y Ubuntu 18 o superior. La única dependencia para CentOS 6 es libselinux-python y también la hemos incluido. Los requisitos básicos son:
- Servidor CentOS/Ubuntu
- Python debe estar instalado en el servidor de destino
- El puerto 9093 debe estar abierto en tu servidor
Variables del Rol
---
# archivo por defecto para alertmanager
alert_version: "0.20.0"
base_url: "https://github.com/prometheus/alertmanager/releases/download"
alertmanager_dir: "alertmanager-{{ version }}.linux-amd64"
download_url: "{{ base_url }}/v{{ version }}/{{ alertmanager_dir }}.tar.gz"
alertmanager_user: "alertmanager"
alertmanager_group: "alertmanager"
prometheus_user: "prometheus"
prometheus_group: "prometheus"
binary_path: "/usr/local/bin"
# Notificación por Email
email_integration: "no"
sender_email: "[email protected]"
alertmanager_email: "[email protected]"
smtp_server: "smtp.gmail.com:587"
# Integración con Slack
slack_integration: "yes"
slack_webhook: "https://hooks.slack.com/services/T00000000/B00/XXXXXX"
slack_channel_name: "alerting-channel"
# Integración con Google Chat
google_chat_integration: "no"
calert_home: "/opt/calert"
calert_base_url: "https://github.com/mr-karan/calert/releases/download"
calert_url: "{{ calert_base_url }}/v1.2.1/calert_1.2.1_linux_amd64.tar.gz"
google_chat_room: "nombre-del-sala-google"
room_webhook: "webhook-de-sala-google-chat"
# Integración con PagerDuty
PagerDuty_integration: "no"
PagerDuty_channel_name: "call-alerting-channel"
pagerduty_url: "https://events.pagerduty.com/v2/enqueue"
# Integración con SNS
sns_integration: "no"
sns_channel_name: "sns"
region: "us-east-1"
Puedes definir cualquier versión de Prometheus así como la versión de alertmanager que deseas instalar en tu servidor.
Variables Obligatorias
Variable | Valor por Defecto | Valores Posibles | Descripción |
---|---|---|---|
alert_version | "0.20.0" | Cualquier Versión | Alertmanager se descargará desde las versiones de github, así que debes definir la versión |
alertmanager_user | alertmanager | Cualquier Usuario | Usuario del Servicio Alertmanager |
alertmanager_group | alertmanager | Cualquier Grupo | Grupo del Servicio Alertmanager |
prometheus_user | prometheus | Cualquier Usuario | Usuario del Servicio Prometheus, Propietario de las Reglas Específicas del Nodo |
prometheus_group | prometheus | Cualquier Grupo | Grupo del Servicio Prometheus, otorga permiso a los archivos de Reglas Específicas del Nodo |
Variables Opcionales
Variable | Valor por Defecto | Valores Posibles | Descripción |
---|---|---|---|
base_url | https://github.com/prometheus/alertmanager/releases/download | URL base del enlace de descarga de Alertmanager | URL base del enlace de descarga de Alertmanager |
alertmanager_dir | alertmanager-{{ version }}.linux-amd64 | Nombre del Directorio de Alertmanager | Directorio de Alertmanager después de la extracción |
download_url | {{ base_url }}/v{{ version }}/{{ alertmanager_dir }}.tar.gz | Enlace de Descarga de Alertmanager | URL de Github para descargar el binario de Alertmanager |
binary_path | /usr/local/bin | Cualquier Ruta | Ruta del Binario de Alertmanager |
email_integration | "no" | "yes"/"no" | Habilitar/Deshabilitar la integración por email con Alertmanager |
sender_email | "send.test@example.com" | Cualquier Dirección de Email | Dirección de email usada para enviar alertas |
alertmanager_email | "alertmanager.test@example.com" | Cualquier Dirección de Email | Dirección de Email de Alertmanager |
smtp_server | "smtp.gmail.com:587" | dirección del servidor smtp con puerto | Servidor smtp de email usado por Alertmanager |
slack_integration | "no" | "yes"/"no" | Habilitar/Deshabilitar la integración de Slack con Alertmanager |
slack_webhook | "https://hooks.slack.com/services/T00000000/B00/XXXXXX" | Webhook de Cualquier Canal | Webhook del canal de Slack utilizado para integrar con Alertmanager |
slack_channel_name | "alerting-channel" | Cualquier Nombre de Canal de Slack | Nombre del canal de Slack utilizado para enviar alertas |
google_chat_integration | "yes" | "yes"/"no" | Habilitar/Deshabilitar la integración de Google Chat con Alertmanager |
calert_home | "/opt/calert" | Ruta de casa del servicio Calert | Casa del servicio Calert donde estarán los binarios y archivos de configuración |
calert_base_url | "https://github.com/mr-karan/calert/releases/download" | Enlace de descarga del servicio Calert | URL del binario de Calert |
calert_url | "{{ calert_base_url }}/v1.2.1/calert_1.2.1_linux_amd64.tar.gz" | Enlace de descarga del servicio Calert | URL de Github para descargar el binario de Calert |
google_chat_room | "nombre-del-sala-google" | Cualquier Sala de Google Chat | Sala de Google Chat utilizada para enviar alertas |
room_webhook | "webhook-de-sala-google-chat" | Webhook de Cualquier Sala de Google Chat | Webhook de la sala de Google Chat utilizado para integrar con el servicio Calert |
rules_file | "node_exporter.rules" | Archivo por defecto para reglas | Archivo de reglas para establecer alertas |
templates | "email.tmpl" | Archivo por defecto de plantilla | Archivo de plantilla para formato de alertas |
PagerDuty_integration | "no" | "yes"/"no" | Habilitar/Deshabilitar la integración de PagerDuty con Alertmanager |
PagerDuty_channel_name | "call-alerting-channel" | Cualquier Nombre de Canal de PagerDuty | Nombre del Canal de PagerDuty utilizado para enviar alertas |
pagerduty_url | "https://events.pagerduty.com/v2/enqueue" | URL especificada de PagerDuty | URL de PagerDuty |
sns_integration | "no" | "yes"/"no" | Habilitar/Deshabilitar la integración de SNS con Alertmanager |
sns_channel_name | "sns" | Cualquier Nombre de Canal de AWS SNS | Nombre del canal SNS utilizado para enviar alertas a AWS SNS |
region | "us-east-1" | cualquier región para sns | región a la que enviar alertas |
Ejemplo de Playbook
Aquí hay un ejemplo para el playbook principal
---
- hosts: alertmanager
roles:
- role: alertmanager
Aquí estamos usando root como usuario, pero puedes usar un usuario diferente. Para eso, solo debes establecer el valor de "become" en true. Algo así:
---
- hosts: alertmanager
roles:
- role: alertmanager
become: yes
Ejemplo de Inventario
Para el inventario, puedes crear un archivo de hosts en el que definas la IP de tu servidor. Por ejemplo:
[alertmanager]
10.1.1.100 ansible_user=ubuntu ansible_ssh_private_key_file=server1.pem
[prometheus]
10.1.1.100 ansible_user=ubuntu ansible_ssh_private_key_file=server1.pem
Nota: Asegúrate de agregar las IP del servidor Prometheus también. La configuración de Alert Manager se agregará automáticamente al archivo prometheus.yml.
Puedes usar este rol simplemente con este comando
ansible-playbook -i hosts site.yml
Puedes agregar múltiples archivos de reglas y plantillas a la vez pasando variables extra o un archivo json de variables extras, por ejemplo:
Pasando Variables Extras
ansible-playbook -i hosts site.yml --extra-vars='{"rules_file": ["rule_file1","rule_file2"], "templates": ["file1.tmpl", "file2.tmpl"]}'
Pasando un Archivo de Variables Extras
ansible-playbook -i hosts site.yml --extra-vars "@extra_vars.json"
Nota:
Debes mover tus plantillas personalizadas o archivos de reglas a la carpeta osm_alertmanager/files primero.
El archivo de variables extra debe estar en formato json, por ejemplo:
Archivo de variables extras - extra_vars.json
{
"rules_file": "rule_file1",
"templates": "file2.tmpl"
}
Estructura del Directorio del Rol
Esta es la estructura del directorio del rol:
osm_alertmanager
├── defaults
│ └── main.yml
├── files
│ ├── alertmanager.init
│ ├── email.tmpl
| ├── sns.tmpl
| ├── slack_notification.tmpl
│ ├── google_chat_calert.tmpl
│ ├── node_exporter.rules
│ ├── mysql_exporter.rules
│ ├── telegraf_kafka.rules
│ └── telegraf_node.rules
├── handlers
│ └── main.yml
├── README.md
├── site.yml
├── tasks
│ ├── calert.yml
│ ├── debian.yml
│ ├── main.yml
│ ├── prerequisites.yml
│ └── redhat.yml
└── templates
├── alertmanager.service.j2
├── alertmanager.yml.j2
├── calert.service.j2
└── calert.toml.j2
Después de la instalación exitosa de alertmanager, puedes navegar a través de la URL de alertmanager y ver la interfaz web
Licencia
BSD
Referencias
Información del Autor
Este rol es escrito y mantenido por [Abhishek Dubey] (https://gitlab.com/abhishek-dubey). Si tienes alguna consulta o sugerencia, no dudes en comunicarte a los siguientes correos.
Alertmanager is tool that handles alerts sent by Prometheus.
ansible-galaxy install opstree_devops.alertmanager