entercloudsuite.prometheus-exporter
Rol de Ansible: prometheus-exporter
Instala prometheus-exporter en Ubuntu 16.04 (Xenial)
Requisitos
Este rol requiere Ansible 2.4 o superior.
Variables del Rol
El rol define la mayoría de sus variables en defaults/main.yml
:
Ejemplo de Playbook
Ejecutar con variables por defecto:
- hosts: all
roles:
- { role: ansible-prometheus-exporter }
Pruebas
Las pruebas se realizan usando Molecule.
Instala Molecule o usa docker-compose run --rm molecule
para ejecutar un contenedor Docker local, basado en el proyecto entercloudsuite/molecule, desde donde puedes usar molecule
.
- Ejecuta
molecule create
para iniciar el contenedor Docker de destino en tu máquina local. - Usa
molecule login
para iniciar sesión en el contenedor en ejecución. - Edita los archivos del rol.
- Añade otros roles necesarios (externos) en el archivo molecule/default/requirements.yml.
- Edita el molecule/default/playbook.yml.
- Define pruebas de infraestructura en la carpeta molecule/default/tests usando el verificador goos.
- Cuando estés listo, usa
molecule converge
para ejecutar el Playbook de Ansible ymolecule verify
para ejecutar la suite de pruebas.
Nota que el proceso de convergencia comienza realizando una verificación de sintaxis del rol.
Destruye el contenedor Docker con el comandomolecule destroy
.
Para ejecutar todos los pasos con un solo comando, usa molecule test
.
Para ejecutar el rol dirigido a una VM, usa el archivo playbook_deploy.yml por ejemplo con el siguiente comando: ansible-playbook ansible-prometheus-exporter/molecule/default/playbook_deploy.yml -i VM_IP_OR_FQDN, -u ubuntu --private-key private.pem
.
Más ejemplos
Desplegar node_exporter
Playbook
simple
- name: instalar node_exporter en todas las instancias
hosts: all
roles:
- role: ansible-prometheus-exporter
prometheus_exporter_name: node_exporter
más opciones
- name: instalar node_exporter en todas las instancias
hosts: all
roles:
- role: ansible-prometheus-exporter
prometheus_exporter_name: node_exporter
prometheus_exporter_config_flags:
'--web.listen-address': '0.0.0.0:9100'
'--log.level': 'info'
Desplegar haproxy_exporter
Playbook
- role: entercloudsuite.prometheus-exporter
prometheus_exporter_version: 0.9.0
prometheus_exporter_name: "haproxy_exporter"
prometheus_enable_exporter_config_flags: true
prometheus_exporter_config_flags:
'--haproxy.scrape-uri': 'unix:/run/haproxy/admin.sock'
Configuración de HAproxy
stats socket /run/haproxy/admin.sock mode 666 level admin
Desplegar mysqld_exporter
Playbook
hosts: mysql_exporter
roles:
- role: entercloudsuite.prometheus-exporter
prometheus_exporter_name: mysqld_exporter
prometheus_exporter_version: 0.10.0
prometheus_environment_variables:
'DATA_SOURCE_NAME': 'exporter:v3rys3cr3tp4sw0rd@(mysqlhost:3306)/'
Configuración de mysql
Crear usuario para monitoreo
shell
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'XXXXXXXX' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
ejemplo de tarea en ansible usando el módulo mysql_user
- name: Crear usuario para monitoreo
mysql_user:
name: "exporter"
host: localhost
password: "v3rys3cr3tp4sw0rd"
priv: '*.*:PROCESS,REPLICATION CLIENT,SELECT'
state: present
Desplegar blackbox_exporter
archivo de configuración https://github.com/prometheus/blackbox_exporter/blob/master/blackbox.yml
Establece la variable prometheus_exporter_custom_conf_destination para desplegar el archivo de configuración en una ubicación específica
default-value: "{{ prometheus_exporters_common_root_dir }}/{{prometheus_exporter_name}}_current"
prometheus_exporter_conf_main ubicación del archivo de configuración en el directorio del playbook:
ejemplo:
prometheus_exporter_conf_main: black_box_exporter_example_config.yaml
ubicación del archivo:
$PLAYBOOKPATH/black_box_exporter_example_config.yaml
prometheus_exporter_conf_main: prometheus_cof/black_boxexporter/black_box_exporter_example_config.yaml
ubicación del archivo:
$PLAYBOOKPATH/prometheus_cof/black_boxexporter/black_box_exporter_example_config.yaml
prometheus_exporter_conf_main: black_box_exporter_example_config.yaml
Playbook
- name: instalar blackbox_exporter en el grupo
hosts: blackbox_exporter
roles:
- role: ansible-prometheus-exporter
prometheus_exporter_name: blackbox_exporter
prometheus_exporter_version: 0.12.0
# ruta a playbookpath/{{prometheus_exporter_conf_main}} ruta personalizada
prometheus_exporter_conf_main: black_box_exporter_example_config.yaml
prometheus_exporter_config_flags:
"--config.file": "{{ prometheus_exporter_custom_conf_destination }}/black_box_exporter_example_config.yaml"
Desplegar postgres_exporter
- name: instalar postgres_exporter en el grupo postgres_exporter
hosts: postgres_exporter
roles:
- role: ansible-prometheus-exporter
prometheus_exporter_name: postgres_exporter
url: https://github.com/wrouesnel/postgres_exporter/releases/download/v0.4.6/postgres_exporter_v0.4.6_linux-amd64.tar.gz
prometheus_environment_variables:
'DATA_SOURCE_NAME': 'postgresql://user:password@localhost:5432/?sslmode=disable'
Desplegar uwsgi_exporter
- name: instalar uwsgi_exporter en la instancia uwsgi
hosts: uwsgi
roles:
- role: ansible-prometheus-exporter
prometheus_exporter_name: uWSGI_expoter
url: https://github.com/AndreaGreco/prometeus_uwsgi_exporter/files/1734745/uWSGI_expoter-v1.1.linux-amd64.tar.gz
prometheus_exporter_conf_main: prometheus/config_uwsgi_expoter.yaml
prometheus_exporter_config_flags:
"-c": "{{ prometheus_exporters_common_root_dir }}/{{prometheus_exporter_name}}_current/config_uwsgi_expoter.yaml"
"-n": ""
Licencia
MIT
ansible-galaxy install entercloudsuite.prometheus-exporter