0x0i.prometheus

logo ansible

logo prometheus

Rôle Ansible :fire: :straight_ruler: Prometheus

Rôle Galaxy Dernière version GitHub Licence : MIT

Table des Matières

Rôle Ansible qui installe et configure Prometheus : une base de données de séries temporelles multi-dimensionnelle et un outil de surveillance/alerte.

Plateformes Supportées :
* Debian
* Redhat (CentOS/Fedora)
* Ubuntu

Exigences

Nécessite l'utilitaire unzip/gtar installé sur l'hôte cible. Voir les notes du module ansible unarchive ici pour plus de détails.

Variables de Rôle

Les variables sont organisées selon les étapes suivantes de provisionnement logiciel et matériel :

  • installation
  • configuration
  • lancement
  • désinstallation

Installation

prometheus et son alertmanager associé peuvent être installés à l'aide d'archives compressées (.tar, .zip), téléchargées et extraites de diverses sources.

Les variables suivantes peuvent être personnalisées pour contrôler divers aspects de ce processus d'installation, de la version du logiciel et de l'emplacement source des binaires à l'annuaire d'installation où ils sont stockés :

managed_services: <liste-de-services (prometheus | alertmanager)> (par défaut: ['prometheus'])

  • liste des services de l'outil Prometheus à gérer via ce rôle

prometheus_user: <nom-utilisateur-service> (par défaut: prometheus)

  • utilisateur et groupe de service dédiés utilisés par prometheus pour la séparation des privilèges (voir ici pour plus de détails)

install_dir: </chemin/vers/annuaire/d'installation> (par défaut: /opt/prometheus)

  • chemin sur l'hôte cible où les binaires prometheus doivent être extraits

archive_url: <chemin-ou-url-vers-archive> (par défaut: voir defaults/main.yml)

  • adresse d'une archive tar ou zip compressée contenant des binaires prometheus. Cette méthode supporte techniquement l'installation de n'importe quelle version disponible de prometheus. Des liens vers les versions officielles peuvent être trouvés ici.

archive_checksum: <chemin-ou-url-vers-checksum> (par défaut: voir defaults/main.yml)

  • adresse d'un fichier de somme de contrôle pour vérifier l'intégrité des données de l'archive spécifiée prometheus. Bien que recommandé et généralement considéré comme une bonne pratique, spécifier une somme de contrôle n'est pas obligatoire et peut être désactivé en fournissant une chaîne vide ('') pour sa valeur.

checksum_format: <chaîne> (par défaut: voir sha256)

  • algorithme de hachage utilisé pour la vérification des fichiers associée à la somme de contrôle de l'archive spécifiée. Référence ici pour plus d'informations sur les checksums/cryptographic hashes.

alertmgr_installdir: </chemin/vers/annuaire/d'installation> (par défaut: /opt/alertmanager)

  • chemin sur l'hôte cible où les binaires alertmanager doivent être extraits

exporter_installdir: </chemin/vers/annuaire/d'installation> (par défaut: {{ install_dir }}/exporters)

  • chemin sur l'hôte cible où les binaires des exportateurs Prometheus doivent être extraits

alertmgr_archive_url: <chemin-ou-url-vers-archive> (par défaut: voir defaults/main.yml)

  • adresse d'une archive tar ou zip compressée contenant des binaires alertmanager. Cette méthode supporte techniquement l'installation de n'importe quelle version disponible de alertmanager. Des liens vers les versions officielles peuvent être trouvés ici.

alertmgr_archive_checksum: <chemin-ou-url-vers-checksum> (par défaut: voir defaults/main.yml)

  • adresse d'un fichier de somme de contrôle pour vérifier l'intégrité des données de l'archive spécifiée alertmanager. Bien que recommandé, spécifier une somme de contrôle n'est pas obligatoire et peut être désactivé en fournissant une chaîne vide ('') pour sa valeur.

alertmgr_checksum_format: <chaîne> (par défaut: voir sha256)

  • algorithme de hachage utilisé pour la vérification des fichiers associée à la somme de contrôle de l'archive spécifiée. Référence ici pour plus d'informations sur les checksums/cryptographic hashes.

filesd_path: </chemin/vers/fichiers-sd> (par défaut: {{ install_dir }}/filesd)

  • chemin sur l'hôte cible où les fichiers de découverte de fichiers Prometheus doivent être stockés par défaut

rules_path: </chemin/vers/fichiers-de-règles> (par défaut: {{ install_dir }}/rules.d)

  • chemin sur l'hôte cible où les fichiers de règles Prometheus doivent être stockés par défaut

templates_path: </chemin/vers/fichiers-modèles-alertmanager> (par défaut: {{ alertmgr_installdir }}/templates)

  • chemin sur l'hôte cible où les fichiers de modèles alertmanager doivent être stockés par défaut

Configuration

Avec ce rôle, la configuration d'une installation de prometheus est organisée selon les composants suivants :

  • configuration du service prometheus (prometheus.yml)
  • découverte de services de fichiers (file_sd - *.[json|yml])
  • règles d'enregistrement et d'alerte (rule_files - *.[json|yml])
  • configuration du service alertmanager (alertmanager.yml)
  • fichiers de modèles alertmanager (*.tmpl)

Chaque configuration peut être exprimée au sein des variables suivantes pour personnaliser le contenu et les paramètres des fichiers de configuration désignés à rendre :

config_dir: </chemin/vers/annuaire/de/configuration> (par défaut: {{ install_dir }})

  • chemin sur l'hôte cible où les fichiers de configuration prometheus doivent être rendus

data_dir: </chemin/vers/annuaire/de/données> (par défaut: /var/data/prometheus)

  • chemin sur l'hôte cible où prometheus stocke les données

alertmgr_configdir: </chemin/vers/annuaire/de/configuration> (par défaut: {{ alertmgr_installdir }})

  • chemin sur l'hôte cible où les fichiers de configuration alertmanager doivent être rendus

alertmgr_datadir: </chemin/vers/annuaire/de/données> (par défaut: /var/data/alertmanager)

  • chemin sur l'hôte cible où alertmanager stocke les données

Configuration du Service Prometheus

La configuration du service Prometheus peut être exprimée au sein du hash, prometheus_config, qui contient une série de paires clé-valeur représentant une section indiquant les différentes cibles de scraping (sources à partir desquelles collecter des métriques), mécanismes de découverte de services, ensembles de règles d'enregistrement/d'alerte et configurations pour l'interfaçage avec les systèmes de lecture/écriture distants utilisés par le service Prometheus.

Les valeurs de ces clés sont généralement des dicts ou des listes de dicts contenant elles-mêmes un ensemble de paires clé-valeur représentant les spécifications/settings associées (par exemple, l'intervalle de scraping ou la fréquence à laquelle récupérer les cibles pour les métriques globalement) pour chaque section. Ce qui suit fournit un aperçu et des exemples de configurations pour chacun.

:global

[prometheus_config:] global: <clé: valeur,...> (par défaut: voir defaults/main.yml)

  • spécifie des paramètres qui sont valides et servent de valeurs par défaut dans tous les autres contextes de configuration. Voir ici pour plus de détails.
Exemple
  prometheus_config:
    global:
      # À quelle fréquence récupérer les cibles par défaut.
      scrape_interval: 15s
      # Après combien de temps une requête de scraping expire.
      scrape_timeout: 30s
      # À quelle fréquence évaluer les règles.
      evaluation_interval: 30s
      # Les labels à ajouter à toute série temporelle ou alertes lors de la communication avec
      # des systèmes externes (fédération, stockage à distance, Alertmanager).
      external_labels:
        monitor: example
        foo: bar
:scrape_configs

[prometheus_config:] scrape_configs: <liste-des-dicts> (par défaut: voir defaults/main.yml)

  • spécifie un ensemble de cibles et les paramètres décrivant comment les récupérer organisés en travaux

Les cibles peuvent être configurées statiquement ou découvertes dynamiquement à l'aide de l'un des mécanismes de découverte de services supportés. Voir ici pour plus de détails et ici pour une liste des méthodes de découverte de services supportées.

Exemple
  prometheus_config:
    scrape_configs:
      - job_name: static-example
        static_configs:
        - targets: ['localhost:9090', 'localhost:9191']
          labels:
            example: label
      - job_name: kubernetes-example
        kubernetes_sd_configs:
        - role: endpoints
          api_server: 'https://localhost:1234'
          namespaces:
            names:
              - default
:rule_files

[prometheus_config:] rule_files: <liste> (par défaut: voir defaults/main.yml)

  • spécifie une liste de motifs indiquant les noms de fichiers et chemins

Les règles et alertes sont lues à partir de tous les fichiers correspondants. Les règles tombent dans l'une des deux catégories : règles d'enregistrement et règles d'alerte. Voir ici pour des détails autour des règles d'enregistrement et ici pour des détails autour des règles d'alerte.

Exemple
  prometheus_config:
    rule_files:
    - "example.yml"
    - "example_rules/*"
:remote_read

[prometheus_config:] remote_read: <liste-des-dicts> (par défaut: voir defaults/main.yml)

  • spécifie les paramètres liés à la fonctionnalité de lecture distante

Voir ici pour plus de détails. Pour une liste des plugins d'intégration de lecture/stockage à distance disponibles, consultez ce lien.

Exemple
  prometheus_config:
    remote_read:
    - url: http://remote1/read
      read_recent: true
      name: default
    - url: http://remote2/read
      read_recent: false
      name: read_special
      required_matchers:
        job: special
      tls_config:
        cert_file: valid_cert_file
        key_file: valid_key_file
:remote_write

[prometheus_config:] remote_write: <liste-des-dicts> (par défaut: voir defaults/main.yml)

  • spécifie les paramètres liés à la fonctionnalité d'écriture distante

Voir ici pour plus de détails. Pour une liste des plugins d'intégration d'écriture/stockage à distance disponibles, consultez ce lien.

Exemple
  prometheus_config:
    remote_write:
    - name: drop_expensive
      url: http://remote1/push
      write_relabel_configs:
      - source_labels: [__name__]
        regex: expensive.*
        action: drop
    - name: rw_tls
      url: http://remote2/push
      tls_config:
        cert_file: valid_cert_file
        key_file: valid_key_file
:alerting

[prometheus_config:] alerting: <clé: valeur,...> (par défaut: voir defaults/main.yml)

  • spécifie les paramètres liés à l’Alertmanager en plus des instances Alertmanager auxquelles le serveur Prometheus envoie des alertes

Cette section fournit les paramètres pour configurer comment communiquer avec ces Alertmanagers. Les Alertmanagers peuvent être configurés statiquement via le paramètre de configuration statique ou découvert dynamiquement à l'aide de l'un des mécanismes de découverte de services supportés. Voir ici pour plus de détails.

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

Découverte de Services par Fichier

La découverte de services par fichier fournit un moyen plus générique de configurer des cibles statiques et sert d'interface pour brancher des mécanismes de découverte de services personnalisés. Elle lit un ensemble de fichiers contenant une liste de zéro ou plusieurs <static_config>s. Les changements dans tous les fichiers définis sont détectés via des surveillances de disque et appliqués immédiatement. Les fichiers peuvent être fournis en format YAML ou JSON. Seuls les changements aboutissant à des groupes cibles bien formés sont appliqués. Voir ici pour plus de détails.

prometheus_file_sd: <liste-des-dicts> (par défaut: [])

  • spécifie les configurations file_sd prometheus à rendre

Avec ce rôle, les paramètres de configuration de découverte de services par fichier peuvent être exprimés au sein du hash, prometheus_file_sd, qui contient une liste de dicts encapsulant le chemin, le nom et le contenu de configuration d'un fichier yaml ou json à charger par prometheus pour la découverte par fichier.

[prometheus_file_sd : <entrée>:] name: <chaîne> (par défaut: AUCUN - obligatoire)

  • nom du fichier_sd à rendre

[prometheus_file_sd : <entrée>:] path: <chaîne> (par défaut: {{ install_dir }}/file_sd)

  • chemin du fichier_sd à rendre

[prometheus_file_sd : <entrée>:] config: <liste-des-dicts> (par défaut: AUCUN - obligatoire)

  • liste de dictionnaires représentant les paramètres indiquant un ensemble de cibles statiques à spécifier dans le fichier_sd
Exemple
  prometheus_file_sd:
  - name: example-file.slow.json
    config:
    - targets: ["host1:1234"]
      labels:
        test-label: example-slow-file-sd
  - name: file.yml
    path: /etc/prometheus/file_sd
    config:
    - targets: ["host2:1234"]

NB : Une configuration de scrape_config file_sd associée est attendue dans le fichier prometheus.yml pour un chargement réussi.

Fichiers de Règles

Prometheus prend en charge deux types de règles qui peuvent être configurées puis évaluées à des intervalles réguliers : les règles d'enregistrement et les règles d'alerte. Les règles d'enregistrement vous permettent de calculer à l'avance des expressions fréquemment nécessaires ou coûteuses en calcul et d'enregistrer leur résultat comme un nouvel ensemble de séries temporelles. Les règles d'alerte vous permettent de définir des conditions d'alerte basées sur les expressions du langage d'expression de Prometheus et d'envoyer des notifications pour les alertes déclenchées à un service externe. Voir ici pour plus de détails.

prometheus_rule_files: <liste-des-dicts> (par défaut: [])

  • spécifie les fichiers de règles prometheus à rendre

Avec ce rôle, les deux types de règles peuvent être exprimés au sein du hash, prometheus_rule_files, qui contient une liste de dicts encapsulant le chemin, le nom et le contenu de configuration d'un fichier yaml ou json à charger par prometheus pour la configuration des règles.

[prometheus_rule_files : <entrée>:] name: <chaîne> (par défaut: AUCUN - obligatoire)

  • nom du fichier de règles à rendre

[prometheus_rule_files : <entrée>:] path: <chaîne> (par défaut: {{ install_dir }}/rules.d)

  • chemin du fichier de règles à rendre

[prometheus_rule_files : <entrée>:] config: <liste-des-dicts> (par défaut: AUCUN - obligatoire)

  • liste de dictionnaires représentant les paramètres indiquant un ensemble de groupes de règles à spécifier dans le fichier de règles
Exemple
prometheus_rule_files:
- name: example-rules.yml
  config:
    groups:
    - name: exemple de règle d'enregistrement
      rules:
      - record: job:http_inprogress_requests:sum
        expr: sum(http_inprogress_requests) by (job)
- name: nondefault-path-example-rules.yml
  path: /etc/prometheus/rules.d
  config:
    groups:
    - name: exemple de règle d'alerte
      rules:
      - alert: HighRequestLatency
        expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5
        for: 10m
        labels:
          severity: page
        annotations:
          summary: Latence de requête élevée

NB : Une section rule_files associée est attendue dans le fichier prometheus.yml pour un chargement réussi.

Configuration du Service Alertmanager

La configuration du service Alertmanager peut être exprimée au sein du hash, alertmanager_config, qui contient une série de paires clé-valeur représentant l'une d'un ensemble de sections indiquant diverses configurations de routage, récepteur, modèles et inhibition des alertes.

Les valeurs de ces clés sont généralement des dicts ou des listes de dicts contenant elles-mêmes un ensemble de paires clé-valeur représentant les spécifications/settings associées (par exemple, l'URL API à utiliser pour les notifications Slack) pour chaque section. Ce qui suit fournit un aperçu et des exemples de configurations pour référence.

:global

[alertmanager_config:] global: <clé: valeur,...> (par défaut: voir defaults/main.yml)

  • spécifie des paramètres valides qui servent de valeurs par défaut dans tous les autres contextes de configuration. Voir ici pour plus de détails.
Exemple
  alertmanager_config:
    global:
      # Le smarthost et l'expéditeur SMTP utilisés pour les notifications par mail.
      smtp_smarthost: 'localhost:25'
      smtp_from: '[email protected]'
      smtp_auth_username: 'alertmanager'
      smtp_auth_password: 'password'
      # Le token d'authentification pour Hipchat.
      hipchat_auth_token: '1234556789'
      # L'hôte alternatif pour Hipchat.
      hipchat_api_url: 'https://hipchat.foobar.org/'
:route

[alertmanager_config:] route: <clé: valeur,...> (par défaut: voir defaults/main.yml)

  • définit un nœud dans un arbre de routage et ses enfants

Chaque alerte entre dans l'arbre de routage au niveau du routeur supérieur configuré, qui doit correspondre à toutes les alertes (c'est-à-dire ne pas avoir de matchers configurés). Elle traverse ensuite les nœuds enfants. Si continue est défini sur false, il s'arrête après le premier enfant correspondant. Si continue est vrai sur un nœud correspondant, l'alerte continuera de correspondre aux frères suivants. Voir ici pour plus de détails.

Exemple
  alertmanager_config:
    route:
      receiver: 'récepteur-par-défaut'
      group_wait: 30s
      group_interval: 5m
      repeat_interval: 4h
      group_by: [cluster, alertname]
      # Toutes les alertes qui ne correspondent pas aux routes enfants suivantes
      # resteront au nœud racine et seront envoyées au 'récepteur-par-défaut'.
      routes:
        # Toutes les alertes avec service=mysql ou service=cassandra
        # sont envoyées au pager de la base de données.
      - receiver: 'database-pager'
        group_wait: 10s
        match_re:
          service: mysql|cassandra
      # Toutes les alertes avec le label team=frontend correspondent à cette sous-route.
      # Elles sont regroupées par produit et environnement plutôt que par cluster
      # et nom d'alerte.
      - receiver: 'frontend-pager'
        group_by: [produit, environnement]
        match:
          team: frontend
:receivers

[alertmanager_config:] inhibit_rules: <liste-des-dicts> (par défaut: voir defaults/main.yml)

  • spécifie une liste de récepteurs de notifications

Les récepteurs sont une configuration nommée d'une ou plusieurs intégrations de notification. Voir ici pour plus de détails.

Exemple
  alertmanager_config:
    receivers:
    - name: 'team-X-mails'
      email_configs:
      - to: '[email protected]'
      pagerduty_configs:
      - service_key: <team-X-key>
      hipchat_configs:
      - auth_token: <auth_token>
        room_id: 85
        message_format: html
        notify: true
:inhibit_rules

[alertmanager_config:] inhibit_rules: <liste-des-dicts> (par défaut: voir defaults/main.yml)

  • spécifie une liste de règles d'inhibition

Une règle d'inhibition mute une alerte (cible) correspondant à un ensemble de matchers lorsqu'une alerte (source) existe qui correspond à un autre ensemble de matchers. Voir ici pour plus de détails.

Exemple
  alertmanager_config:
    inhibit_rules:
    - source_match:
        severity: 'critical'
      target_match:
        severity: 'warning'
      # Appliquer l'inhibition si le nom de l'alerte est le même.
      equal: ['alertname', 'cluster', 'service']
:templates

[alertmanager_config:] templates: <liste> (par défaut: voir defaults/main.yml)

  • spécifie des fichiers et des répertoires à partir desquels les modèles de notification sont lus

Le dernier composant peut utiliser un motif générique, par exemple, templates/*.tmpl. Voir ici pour une référence de modèles de notification et ce lien pour des exemples.

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

Modèles d'Alertmanager

Prometheus crée et envoie des alertes à l'Alertmanager qui envoie ensuite des notifications à différents récepteurs en fonction de leurs labels. Les notifications envoyées aux récepteurs sont construites via des modèles. L'Alertmanager est livré avec des modèles par défaut, mais ils peuvent aussi être personnalisés. Voir ici pour plus de détails.

alertmanager_templates: <liste-des-dicts> (par défaut: [])

  • spécifie les configurations de modèle de notification d'alertmanager à rendre

Avec ce rôle, les paramètres de configuration de modèle d'alertmanager peuvent être exprimés au sein du hash, alertmanager_templates, qui contient une liste de dicts représentant et encapsulant le chemin, le nom et le contenu de configuration d'un fichier tmpl à charger par alertmanager.

[alertmanager_templates : <entrée>:] name: <chaîne> (par défaut: AUCUN - obligatoire)

  • nom du fichier de modèle à rendre

[alertmanager_templates : <entrée>:] path: <chaîne> (par défaut: {{ alertmgr_installdir }}/templates)

  • chemin du fichier de modèle à rendre

[alertmanager_templates : <entrée>:] config: <liste-des-dicts> (par défaut: AUCUN - obligatoire)

  • liste de dictionnaires représentant les paramètres indiquant un ensemble de configurations de modèle à rendre
Exemple
  alertmanager_templates:
  - name: test
    config:
    - define: "myorg.test.guide"
      template: 'https://internal.myorg.net/wiki/alerts/\{\{ .GroupLabels.app \}\}/\{\{ .GroupLabels.alertname \}\}'
  - name: test2
    path: /etc/alertmanager/templates
    config:
    - define: "myorg.test.text"
      template: 'summary: \{\{ .CommonAnnotations.summary \}\}\ndescription: \{\{ .CommonAnnotations.description \}\}'

NB : Une section de configuration templates associée est attendue dans le fichier alertmanager.yml pour un chargement réussi.

Lancement

Ce rôle prend en charge le lancement de tous les composants de l'écosystème de surveillance et d'alerte de Prometheus. Cela consiste en services Prometheus et Alertmanager ainsi qu'une multitude d'exportateurs de métriques. L'exécution de chacun est réalisée en utilisant l'outil de gestion de services systemd qui gère les services en tant que processus d'arrière-plan ou démons, soumis à la configuration et au potentiel d'exécution fournis par son infrastructure de gestion sous-jacente.

Les variables suivantes peuvent être personnalisées pour gérer la définition de l'unité [Service] de systemd et le profil/application d'exécution des services :

Prometheus

extra_run_args: <options-cli-prometheus> (par défaut: [])

  • liste des arguments en ligne de commande prometheus à passer au binaire à l'exécution pour personnaliser le lancement.

Supportant l'expression complète de prometheus's cli, cette variable permet de personnaliser le lancement selon les spécifications de l'utilisateur.

custom_unit_properties: <hash-des-paramètres-du-service-systemd> (par défaut: [])

  • hash des paramètres utilisés pour personnaliser la configuration de l'unité [Service] et l'environnement d'exécution du service systemd de Prometheus.
Alertmanager

extra_alertmgr_args: <options-cli-alertmanager> (par défaut: [])

  • liste des arguments en ligne de commande alertmanager à passer au binaire à l'exécution pour personnaliser le lancement.

Supportant l'expression complète de alertmanager's cli, cette variable permet de personnaliser le lancement selon les spécifications de l'utilisateur.

custom_alertmgr_properties: <hash-des-paramètres-du-service-systemd> (par défaut: [])

  • hash des paramètres utilisés pour personnaliser la configuration de l'unité [Service] et l'environnement d'exécution du service systemd de Alertmanager.
Exportateurs

prometheus_exporters: <liste-des-dicts> (par défaut: [])

  • spécifie les exportateurs prometheus à installer, lancer et gérer en tant que services systemd.

Chaque entrée dict d'exportateur doit indiquer plusieurs propriétés, y compris le nom ; l'URL et l'adresse d'écoute, de l'exportateur cible pour un bon paramétrage et communication avec un serveur Prometheus. D'autres propriétés utilisées pour personnaliser l'opération de l'exportateur peuvent être spécifiées via une variable extra_args, qui ajoute les arguments de ligne de commande fournis à l'option ExecStart de l'unité. Voir ici pour plus de détails et une liste des plugins d'exportateurs en référence.

[prometheus_exporters : <entrée>:] name: <chaîne> (par défaut: AUCUN - obligatoire)

  • nom de l'exportateur Prometheus à installer

[prometheus_exporters : <entrée>:] url: <chaîne> (par défaut: AUCUN - obligatoire)

  • URL de l'exportateur Prometheus à installer

[prometheus_exporters : <entrée>:] description: <chaîne> (par défaut: <nom-exportateur>)

  • description ou documentation de l'exportateur Prometheus à inclure dans le fichier d'unité de l'exportateur

[prometheus_exporters : <entrée>:] unit_properties: <hash> (par défaut: {})

  • hash des paramètres utilisés pour personnaliser la configuration de l'unité [Service] et l'environnement d'exécution du service de systemd.
Exemple
  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'

Désinstallation

Le support de la désinstallation et de la suppression des artefacts nécessaires au provisionnement permet aux utilisateurs/opérateurs de ramener un hôte cible à son état configuré avant l'application de ce rôle. Cela peut être utile pour recycler les nœuds et les rôles et peut-être fournir des transitions plus gérées/propres entre les mises à jour des outils.

Les variable(s) suivantes peuvent être personnalisées pour gérer ce processus de désinstallation :

perform_uninstall: <true | false> (par défaut: false)

  • pour savoir s'il faut désinstaller et supprimer tous les artefacts et restes de cette installation prometheus sur un hôte cible (voir: handlers/main.yml pour plus de détails)

Dépendances

  • 0x0i.systemd

Exemple de Playbook

exemple par défaut :

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

installer uniquement et gérer le service Prometheus (désactiver la configuration de l'alertmanager) :

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

installer une version spécifique 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

ajuster les annuaires d'installation, de configuration et de données de Prometheus et 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

personnaliser les réglages globaux de scraping et d'évaluation :

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

personnaliser la configuration d'alerte/alertmanager de prometheus :

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

créer des règles d'enregistrement et d'alerte :

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      prometheus_config:
        rule_files:
        - /etc/prometheus/rules.d/*
      prometheus_rule_files:
      - name: example-rules.yml
        path: /etc/prometheus/rules.d/*
        config:
          groups:
            - name: recording rule example
              rules:
                - record: job:http_inprogress_requests:sum
                  expr: sum(http_inprogress_requests) by (job)
      - name: another-example.yml
        path: /etc/prometheus/rules.d
        config:
          groups:
            - name: alerting rule example
              rules:
                - alert: HighRequestLatency
                  expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5
                  for: 10m
                  labels:
                    severity: page
                  annotations:
                    summary: High request latency

configuration de cible statique avec des réglages de scraping et d'évaluation :

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

configuration de scrape_config basée sur fichier avec des réglages de scraping et d'évaluation :

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

configuration de cible dns :

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      prometheus_config:
        scrape_configs:
        - job_name: dns-example
          dns_sd_configs:
          - refresh_interval: 15s
            names:
            - first.dns.address.domain.com
            - second.dns.address.domain.com
          - names:
            - third.dns.address.domain.com

configuration de cible kubernetes avec TLS et authentification basique :

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      prometheus_config:
        scrape_configs:
        - job_name: kubernetes-example
          kubernetes_sd_configs:
          - role: endpoints
            api_server: 'https://localhost:1234'
            tls_config:
              cert_file: valid_cert_file
              key_file: valid_key_file
            basic_auth:
              username: 'myusername'
              password: 'mysecret'

configuration de cible ec2 :

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      prometheus_config:
        scrape_configs:
        - job_name: ec2-example
          ec2_sd_configs:
          - region: us-east-1
            access_key: access
            secret_key: mysecret
            profile: profile
            filters:
            - name: tag:environment
              values:
              - prod
            - name: tag:service
              values:
              - web
              - db

configuration de cible openstack :

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

configuration de cible azure :

- hosts: all
  roles:
  - role: 0x0I.prometheus
    vars:
      prometheus_config:
        scrape_configs:
        - job_name: azure-example
          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: mysecret
            port: 9100

configuration de cible marathon :

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

configuration de cible consul :

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

Licence

MIT

Informations sur l’Auteur

Ce rôle a été créé en 2019 par O1.IO.

À propos du projet

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

Installer
ansible-galaxy install 0x0i.prometheus
Licence
Unknown
Téléchargements
923
Propriétaire