0x0i.prometheus
Ansible-Rolle :fire: :straight_ruler: Prometheus
Inhalt
- Unterstützte Plattformen
- Anforderungen
- Rollenvariablen
- Abhängigkeiten
- Beispiel Playbook
- Lizenz
- Autoreninformation
Ansible-Rolle, die Prometheus installiert und konfiguriert: eine multidimensionale, nicht-verteilte Zeitreihendatenbank und Überwachungs-/Alarmierungs-Toolkit.
Unterstützte Plattformen:
* Debian
* Redhat(CentOS/Fedora)
* Ubuntu
Anforderungen
Benötigt das Dienstprogramm unzip/gtar
, das auf dem Zielhost installiert sein muss. Siehe die Anmerkungen zum Ansible unarchive
-Modul hier für Details.
Rollenvariablen
Variablen sind verfügbar und organisiert nach den folgenden Phasen der Software- und Maschinenbereitstellung:
- installation
- konfiguration
- start
- deinstallation
Installation
prometheus
und die zugehörige alertmanager
-Software können mit komprimierten Archiven (.tar
, .zip
) installiert werden, die aus verschiedenen Quellen heruntergeladen und extrahiert werden.
Die folgenden Variablen können angepasst werden, um verschiedene Aspekte dieses Installationsprozesses zu steuern, von der Softwareversion und dem Speicherort der Binaries bis zum Installationsverzeichnis, in dem sie gespeichert werden:
managed_services: <Liste der Dienste (prometheus | alertmanager)>
(Standard: ['prometheus'])
- Liste der Prometheus-Toolkit-Dienste, die über diese Rolle verwaltet werden sollen.
prometheus_user: <Service-Benutzername>
(Standard: prometheus)
- Dedizierter Dienstbenutzer und Gruppe, die von
prometheus
für die Privilegtrennung verwendet werden (siehe hier für Details).
install_dir: </path/to/installation/dir>
(Standard: /opt/prometheus
)
- Pfad auf dem Zielhost, wohin die
prometheus
-Binaries extrahiert werden sollen.
archive_url: <Pfad oder URL zu Archiv>
(Standard: siehe defaults/main.yml
)
- Adresse eines komprimierten tar oder zip-Archivs, das die
prometheus
-Binaries enthält. Diese Methode unterstützt technisch die Installation jeder verfügbaren Version vonprometheus
. Links zu den offiziellen Versionen finden Sie hier.
archive_checksum: <Pfad oder URL zur Prüfziffer>
(Standard: siehe defaults/main.yml
)
- Adresse einer Prüfziffer-Datei zur Überprüfung der Datenintegrität des angegebenen
prometheus
-Archivs. Obwohl empfohlen und allgemein als bewährte Praxis angesehen, ist es nicht erforderlich, eine Prüfziffer anzugeben, und kann deaktiviert werden, indem eine leere Zeichenfolge (''
) für ihren Wert angegeben wird.
checksum_format: <string>
(Standard: siehe sha256
)
- Hashalgorithmus, der für die Dateiprüfung verwendet wird, der mit der angegebenen Archiv-Prüfziffer verbunden ist. Weitere Informationen über Prüfziffern/Kryptographische Hashes finden Sie hier.
alertmgr_installdir: </path/to/installation/dir>
(Standard: /opt/alertmanager
)
- Pfad auf dem Zielhost, wohin die
alertmanager
-Binaries extrahiert werden sollen.
exporter_installdir: </path/to/installation/dir>
(Standard: {{ install_dir }}/exporters
)
- Pfad auf dem Zielhost, wohin die Prometheus-Exporter-Binaries extrahiert werden sollen.
alertmgr_archive_url: <Pfad oder URL zu Archiv>
(Standard: siehe defaults/main.yml
)
- Adresse eines komprimierten tar oder zip-Archivs, das die
alertmanager
-Binaries enthält. Diese Methode unterstützt technisch die Installation jeder verfügbaren Version vonalertmanager
. Links zu den offiziellen Versionen finden Sie hier.
alertmgr_archive_checksum: <Pfad oder URL zur Prüfziffer>
(Standard: siehe defaults/main.yml
)
- Adresse einer Prüfziffer-Datei zur Überprüfung der Datenintegrität des angegebenen
alertmanager
-Archivs. Obwohl empfohlen und allgemein als bewährte Praxis angesehen, ist es nicht erforderlich, eine Prüfziffer anzugeben, und kann deaktiviert werden, indem eine leere Zeichenfolge (''
) für ihren Wert angegeben wird.
alertmgr_checksum_format: <string>
(Standard: siehe sha256
)
- Hashalgorithmus, der für die Dateiprüfung verwendet wird, der mit der angegebenen Archiv-Prüfziffer verbunden ist. Weitere Informationen über Prüfziffern/Kryptographische Hashes finden Sie hier.
filesd_path: </path/to/file-sd-files>
(Standard: {{ install_dir }}/filesd
)
- Pfad auf dem Zielhost, wo die Prometheus-Datei-Entdeckungsdateien standardmäßig gespeichert werden sollen.
rules_path: </path/to/rule-files>
(Standard: {{ install_dir }}/rules.d
)
- Pfad auf dem Zielhost, wo die Prometheus-Regeldateien standardmäßig gespeichert werden sollen.
templates_path: </path/to/alertmanager-template-files>
(Standard: {{ alertmgr_installdir }}/templates
)
- Pfad auf dem Zielhost, wo die Alertmanager-Vorlagendateien standardmäßig gespeichert werden sollen.
Konfiguration
Mit dieser Rolle wird die Konfiguration einer prometheus
-Installation nach den folgenden Komponenten organisiert:
- Konfiguration des Prometheus-Dienstes (
prometheus.yml
) - Datei-Dienstentdeckung (
file_sd - *.[json|yml]
) - Aufnahme- und Alarmierungsregeln (
rule_files - *.[json|yml]
) - Konfiguration des Alertmanager-Dienstes (
alertmanager.yml
) - Vorlagendateien des Alertmanagers (
*.tmpl
)
Jede Konfiguration kann innerhalb der folgenden Variablen ausgedrückt werden, um die Inhalte und Einstellungen der zum Rendern bestimmten Konfigurationsdateien anzupassen:
config_dir: </path/to/configuration/dir>
(Standard: {{ install_dir }}
)
- Pfad auf dem Zielhost, wo die
prometheus
-Konfigurationsdateien gerendert werden sollen.
data_dir: </path/to/data/dir>
(Standard: /var/data/prometheus
)
- Pfad auf dem Zielhost, wo
prometheus
Daten speichert.
alertmgr_configdir: </path/to/configuration/dir>
(Standard: {{ alertmgr_installdir }}
)
- Pfad auf dem Zielhost, wo die
alertmanager
-Konfigurationsdateien gerendert werden sollen.
alertmgr_datadir: </path/to/data/dir>
(Standard: /var/data/alertmanager
)
- Pfad auf dem Zielhost, wo
alertmanager
Daten speichert.
Prometheus-Dienstkonfiguration
Die Konfiguration des Prometheus-Dienstes kann im Hash prometheus_config
ausgedrückt werden, der eine Reihe von Schlüssel-Wert-Paaren enthält, die eine von mehreren Abschnitten darstellen, die verschiedene Abfragetermine (Quellen, aus denen Metriken gesammelt werden sollen), Dienstentdeckungsmechanismen, Aufnahme-/Alarmregeln und Konfigurationen für die Anbindung an remote Lese-/Schreibsysteme, die vom Prometheus-Dienst verwendet werden.
Die Werte dieser Schlüssel sind in der Regel Dicts oder Listen von Dicts, die selbst eine Reihe von Schlüssel-Wert-Paaren enthalten, die die zugehörigen Spezifikationen/Einstellungen darstellen (z.B. das Abfrageintervall oder die Häufigkeit, mit der Metriken von Zielen weltweit abgerufen werden sollen) für jeden Abschnitt. Folgendes bietet einen Überblick und Beispiele für die Konfigurationen zur Referenz.
:global
[prometheus_config:] global: <key: value,...>
(Standard: siehe defaults/main.yml
)
- Gibt Parameter an, die gültig sind und als Standardwerte in allen anderen Kontexten der Konfiguration dienen. Weitere Einzelheiten finden Sie hier.
Beispiel
prometheus_config:
global:
# Wie häufig die Ziele standardmäßig abgefragt werden.
scrape_interval: 15s
# Wie lange ein Abfrageanforderung Zeit hat, um abzubrechen.
scrape_timeout: 30s
# Wie häufig Regeln bewertet werden.
evaluation_interval: 30s
# Die Labels, die jedem Zeitreihe oder Alarm hinzugefügt werden sollen, wenn die Kommunikation mit
# externen Systemen (Föderation, externe Speicherung, Alertmanager) erfolgt.
external_labels:
monitor: example
foo: bar
:scrape_configs
[prometheus_config:] scrape_configs: <list-of-dicts>
(Standard: siehe defaults/main.yml
)
- Gibt eine Reihe von Zielen und Parametern an, die beschreiben, wie sie abgerufen werden sollen, organisiert in Jobs.
Ziele können statisch konfiguriert oder dynamisch entdeckt werden, indem einer der unterstützten Dienstentdeckungsmechanismen verwendet wird. Weitere Einzelheiten finden Sie hier sowie hier für eine Liste der unterstützten Dienstentdeckungsmethoden.
Beispiel
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: <list>
(Standard: siehe defaults/main.yml
)
- Gibt eine Liste von glob-ähnlichen Muster an, die die Dateinamen und Pfade angeben.
Regeln und Alarme werden aus allen übereinstimmenden Dateien gelesen. Regeln fallen in eine von zwei Kategorien: Aufnahme- und Alarmierungsregeln. Weitere Einzelheiten zu den Aufnahmeregeln finden Sie hier und zu den Alarmierungsregeln finden Sie hier.
Beispiel
prometheus_config:
rule_files:
- "example.yml"
- "example_rules/*"
:remote_read
[prometheus_config:] remote_read: <list-of-dicts>
(Standard: siehe defaults/main.yml
)
- Gibt Einstellungen an, die sich auf die Remote-Lese-Funktion beziehen.
Weitere Einzelheiten finden Sie hier. Eine Liste verfügbarer Remote-Lese-/Speicherplugins/Integrationen finden Sie unter diesem Link.
Beispiel
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: <list-of-dicts>
(Standard: siehe defaults/main.yml
)
- Gibt Einstellungen an, die sich auf die Remote-Write-Funktion beziehen.
Weitere Einzelheiten finden Sie hier. Eine Liste verfügbarer Remote-Write-/Speicherplugins/Integrationen finden Sie unter diesem Link.
Beispiel
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: <key: value,...>
(Standard: siehe defaults/main.yml
)
- Gibt Einstellungen an, die sich auf den Alertmanager beziehen, sowie Alertmanager-Instanzen, an die der Prometheus-Server seine Alarme sendet.
Dieser Abschnitt enthält die Parameter zur Konfiguration der Kommunikation mit diesen Alertmanagern. Alertmanager können entweder statisch über den Parameter statische Konfiguration oder dynamisch über einen der unterstützten Dienstentdeckungsmechanismen konfiguriert werden. Weitere Einzelheiten finden Sie hier.
Beispiel
prometheus_config:
alerting:
alertmanagers:
- scheme: https
static_configs:
- targets:
- "1.2.3.4:9093"
- "1.2.3.5:9093"
Datei-Dienstentdeckung
Die dateibasierte Dienstentdeckung bietet eine allgemeinere Möglichkeit, statische Ziele zu konfigurieren und dient als Schnittstelle zur Einbindung benutzerdefinierter Dienstentdeckungsmechanismen. Sie liest eine Reihe von Dateien, die eine Liste von null oder mehr <static_config>
-s enthalten. Änderungen an allen definierten Dateien werden über Dateiwatches erkannt und sofort angewendet. Dateien können im YAML- oder JSON-Format bereitgestellt werden. Nur Änderungen, die zu gut geformten Zielgruppen führen, werden angewendet. Weitere Einzelheiten finden Sie hier.
prometheus_file_sd: <list-of-dicts>
(Standard: [])
- Gibt die Prometheus-Datei_sd-Konfigurationen an, die gerendert werden sollen.
Mit dieser Rolle können die Einstellungen der dateibasierten Dienstentdeckung innerhalb des Hashes prometheus_file_sd
ausgedrückt werden, der eine Liste von Dictionarien enthält, die den Pfad, den Namen und die Konfigurationsinhalte einer yaml
- oder json
-Datei kapseln, die von Prometheus für die dateibasierte Entdeckung geladen werden soll.
[prometheus_file_sd : <entry>:] name: <string>
(Standard: KEINE - erforderlich)
- Name der Datei_sd-Datei, die gerendert werden soll.
[prometheus_file_sd : <entry>:] path: <string>
(Standard: {{ install_dir }}/file_sd
)
- Pfad der Datei_sd-Datei, die gerendert werden soll.
[prometheus_file_sd : <entry>:] config: <list-of-dicts>
(Standard: KEINE - erforderlich)
- Liste von Dictionarien, die die Einstellungen angeben, die eine Reihe von statischen Zielen in der Datei_sd-Datei angeben.
Beispiel
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: Eine zugehörige file_sd
-Dienstentdeckung-Scrape_Config wird erwartet, um innerhalb der prometheus.yml
-Datei für den erfolgreichen Ladevorgang enthalten zu sein.
Regeldateien
Prometheus unterstützt zwei Arten von Regeln, die konfiguriert und dann in regelmäßigen Abständen bewertet werden können: Aufnahmeregeln und Alarmierungsregeln. Aufnahmeregeln ermöglichen es Ihnen, häufig benötigte oder rechenintensive Ausdrücke im Voraus zu berechnen und ihr Ergebnis als eine neue Reihe von Zeitreihen zu speichern. Alarmierungsregeln ermöglichen es Ihnen, Alarmbedingungen basierend auf Ausdrücken der Prometheus-Ausdruckssprache zu definieren und Benachrichtigungen über auslösende Alarme an einen externen Dienst zu senden. Weitere Einzelheiten finden Sie hier.
prometheus_rule_files: <list-of-dicts>
(Standard: [])
- Gibt die Prometheus-Regeldateien an, die gerendert werden sollen.
Mit dieser Rolle können sowohl Aufnahmeregeln als auch Alarmierungsregeln innerhalb des Hashes prometheus_rule_files
ausgedrückt werden, der eine Liste von Dictionarien enthält, die den Pfad, den Namen und die Konfigurationsinhalte einer yaml
- oder json
-Datei kapseln, die von Prometheus zum Festlegen von Regeln geladen werden soll.
[prometheus_rule_files : <entry>:] name: <string>
(Standard: KEINE - erforderlich)
- Name der Regeldatei, die gerendert werden soll.
[prometheus_rule_files : <entry>:] path: <string>
(Standard: {{ install_dir }}/rules.d
)
- Pfad der Regeldatei, die gerendert werden soll.
[prometheus_rule_files : <entry>:] config: <list-of-dicts>
(Standard: KEINE - erforderlich)
- Liste von Dictionarien, die die Einstellungen zur Angabe einer Reihe von Regelgruppen in der Regeldatei darstellen.
Beispiel
prometheus_rule_files:
- name: example-rules.yml
config:
groups:
- name: recording rule example
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: 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
NB: Eine zugehörige rule_files
-Sektion wird erwartet, um innerhalb der prometheus.yml
-Datei für den erfolgreichen Ladevorgang enthalten zu sein.
Alertmanager-Dienstkonfiguration
Die Konfiguration des Alertmanager-Dienstes kann im Hash alertmanager_config
ausgedrückt werden, der eine Reihe von Schlüssel-Wert-Paaren enthält, die eine von mehreren Abschnitten darstellen und verschiedene Routen-, Empfänger-, Vorlagen- und Alarmhemmungs-Konfigurationen angeben.
Die Werte dieser Schlüssel sind in der Regel Dicts oder Listen von Dicts, die selbst eine Reihe von Schlüssel-Wert-Paaren enthalten, die die zugehörigen Spezifikationen/Einstellungen darstellen (z. B. die API-URL zur Verwendung für Slack-Benachrichtigungen) für jeden Abschnitt. Folgendes bietet einen Überblick und Beispiele für die Konfigurationen zur Referenz.
:global
[alertmanager_config:] global: <key: value,...>
(Standard: siehe defaults/main.yml
)
- Gibt Parameter an, die gültig sind und als Standardwerte in allen anderen Kontexten der Konfiguration dienen. Weitere Einzelheiten finden Sie hier.
Beispiel
alertmanager_config:
global:
# Der Smarthost und der SMTP-Absender, die für E-Mail-Benachrichtigungen verwendet werden.
smtp_smarthost: 'localhost:25'
smtp_from: '[email protected]'
smtp_auth_username: 'alertmanager'
smtp_auth_password: 'password'
# Der Authentifizierungstoken für Hipchat.
hipchat_auth_token: '1234556789'
# Alternativer Host für Hipchat.
hipchat_api_url: 'https://hipchat.foobar.org/'
:route
[alertmanager_config:] route: <key: value,...>
(Standard: siehe defaults/main.yml
)
- Definiert einen Knoten in einem Routing-Baum und seine Kinder.
Jeder Alarm betritt den Routing-Baum über die konfigurierte oberste Route, die alle Alarme übereinstimmen muss (d.h. keine konfigurierten Abgleichkriterien haben darf). Anschließend durchläuft er die untergeordneten Knoten. Wenn continue auf false gesetzt ist, stoppt er nach dem ersten passenden Kind. Wenn für einen passenden Knoten continue auf true gesetzt ist, wird der Alarm weiterhin mit nachfolgenden Geschwistern abgeglichen. Weitere Einzelheiten finden Sie hier.
Beispiel
alertmanager_config:
route:
receiver: 'default-receiver'
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
group_by: [cluster, alertname]
# Alle Alarme, die nicht mit den folgenden untergeordneten Routen übereinstimmen,
# bleiben am Wurzelknoten und werden an den 'default-receiver' gesendet.
routes:
# Alle Alarme mit service=mysql oder service=cassandra
# werden an den Datenbank-Pager gesendet.
- receiver: 'database-pager'
group_wait: 10s
match_re:
service: mysql|cassandra
# Alle Alarme mit dem team=frontend-Label stimmen mit dieser Unterroute überein.
# Sie werden nach Produkt und Umgebung gruppiert, nicht nach Cluster
# und alarmname.
- receiver: 'frontend-pager'
group_by: [product, environment]
match:
team: frontend
:receivers
[alertmanager_config:] inhibit_rules: <list-of-dicts>
(Standard: siehe defaults/main.yml
)
- Gibt eine Liste von Benachrichtigungsempfängern an.
Empfänger sind benannte Konfigurationen für eine oder mehrere Benachrichtigungsintegrationen. Weitere Einzelheiten finden Sie hier.
Beispiel
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: <list-of-dicts>
(Standard: siehe defaults/main.yml
)
- Gibt eine Liste von Hemmungsregeln an.
Eine Hemmungsregel mute einen Alarm (Ziel), der mit einer Reihe von Abgleichkriterien übereinstimmt, wenn ein Alarm (Quelle) existiert, der mit einer anderen Reihe von Abgleichkriterien übereinstimmt. Weitere Einzelheiten finden Sie hier.
Beispiel
alertmanager_config:
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
# Wenden Sie die Hemmung an, wenn der Alarmname gleich ist.
equal: ['alertname', 'cluster', 'service']
:templates
[alertmanager_config:] templates: <list>
(Standard: siehe defaults/main.yml
)
- Gibt Dateien und Verzeichnisse an, aus denen Benachrichtigungsvorlagen gelesen werden.
Die letzte Komponente kann einen Wildcard-Matcher verwenden, z.B. templates/*.tmpl
. Weitere Informationen zu Benachrichtigungsvorlagen finden Sie hier und eine Referenz zu den Vorlagen finden Sie unter diesem Link.
Beispiel
alertmanager_config:
templates:
- '/etc/alertmanager/template/*.tmpl'
Vorlagen des Alertmanager
Prometheus erstellt und sendet Alarme an den Alertmanager, der dann Benachrichtigungen an verschiedene Empfänger sendet, basierend auf deren Labels. Die an Empfänger gesendeten Benachrichtigungen werden über Vorlagen erstellt. Der Alertmanager wird mit Standardvorlagen geliefert, kann jedoch auch angepasst werden. Weitere Einzelheiten finden Sie hier.
altermanager_templates: <list-of-dicts>
(Standard: [])
- Gibt die Konfiguration der Benachrichtigungsvorlagen des
alertmanager
an, die gerendert werden sollen.
Mit dieser Rolle können die Einstellungen der Alertmanager-Vorlage innerhalb des Hashes alertmanager_templates
ausgedrückt werden, der eine Liste von Dictionarien enthält, die den Pfad, den Namen und die Konfigurationsinhalte einer tmpl
-Datei kapseln, die vom Alertmanager geladen werden soll.
[alertmanager_templates : <entry>:] name: <string>
(Standard: KEINE - erforderlich)
- Name der Vorlagendatei, die gerendert werden soll.
[alertmanager_templates : <entry>:] path: <string>
(Standard: {{ alertmgr_installdir }}/templates
)
- Pfad der Vorlagendatei, die gerendert werden soll.
[alertmanager_templates : <entry>:] config: <list-of-dicts>
(Standard: KEINE - erforderlich)
- Liste von Dictionarien, die die Einstellungen zur Angabe einer Reihe von Vorlagenkonfigurationen, die gerendert werden sollen.
Beispiel
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: Eine zugehörige templates
-Konfigurationssektion wird erwartet, um innerhalb der alertmanager.yml
-Datei für den erfolgreichen Ladevorgang enthalten zu sein.
Start
Diese Rolle unterstützt das Starten aller Komponenten des Prometheus-Überwachungs- und Alarmierungstoolkit-Ökosystems. Dazu gehören sowohl die Dienste Prometheus und Alertmanager als auch eine Vielzahl von Metrik-Exportern. Das Ausführen jedes Dienstes erfolgt unter Verwendung des Dienstverwaltungswerkzeugs systemd, das die Dienste als Hintergrundprozesse oder Daemons verwaltet, die den Konfigurationen und Ausführungsoptionen des underlying Management-Frameworks unterliegen.
Die folgenden Variablen können angepasst werden, um die systemd- [Service]-Unit-Definition und das Ausführungsprofil/Policy der Dienste zu verwalten:
Prometheus
extra_run_args: <prometheus-cli-options>
(Standard: []
)
- Liste von
prometheus
-Befehlszeilenargumenten, die zur Laufzeit an die Binärdatei übergeben werden, um den Start anzupassen.
Unterstützt die vollständige Ausdrucksfähigkeit der cli von prometheus, ermöglicht diese Variable eine anpassbare Ausführung.
custom_unit_properties: <hash-of-systemd-service-settings>
(Standard: []
)
- Hash von Einstellungen, die verwendet werden, um die
[Service]
-Unit-Konfiguration und die Ausführungsumgebung des Prometheus systemd-Dienstes anzupassen.
Alertmanager
extra_alertmgr_args: <alertmanager-cli-options>
(Standard: []
)
- Liste von
alertmanager
-Befehlszeilenargumenten, die zur Laufzeit an die Binärdatei übergeben werden, um den Start anzupassen.
Unterstützt die vollständige Ausdrucksfähigkeit der cli von alertmanager, ermöglicht diese Variable eine anpassbare Ausführung.
custom_alertmgr_properties: <hash-of-systemd-service-settings>
(Standard: []
)
- Hash von Einstellungen, die verwendet werden, um die
[Service]
-Unit-Konfiguration und die Ausführungsumgebung des Alertmanager systemd-Dienstes anzupassen.
Exporter
prometheus_exporters: <list-of-dicts>
(Standard: [])
- Gibt die Prometheus-Exporter an, die installiert, gestartet und als systemd-Dienste verwaltet werden sollen.
Jeder Exporter-Dict-Eintrag muss mehrere Eigenschaften angeben, einschließlich Name; URL und Listenadresse des Ziel-Exporters für eine ordnungsgemäße Einrichtung und Kommunikation mit einem Prometheus-Server. Andere Eigenschaften zur Anpassung des Betriebs des Exporters können optional über eine extra_args
-Variable angegeben werden, die die bereitgestellten Befehlszeilenargumente an die ExecStart
-Einstellung der Einheit anhängt. Weitere Einzelheiten finden Sie hier.
[prometheus_exporters : <entry>:] name: <string>
(Standard: KEINE - erforderlich)
- Name des zu installierenden Prometheus-Exporters.
[prometheus_exporters : <entry>:] url: <string>
(Standard: KEINE - erforderlich)
- URL des zu installierenden Prometheus-Exporters.
[prometheus_exporters : <entry>:] description: <string>
(Standard: <exporter-name>
)
- Beschreibung oder Dokumentation des Prometheus-Exporters, die innerhalb der Systemd-Einheit des Exporters enthalten ist.
[prometheus_exporters : <entry>:] unit_properties: <hash>
(Standard: {}
)
- Hash von Einstellungen, die verwendet werden, um die
[Service]
-Unit-Konfiguration und die Ausführungsumgebung dessystemd-Dienstes anzupassen.
Beispiel
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'
Deinstallation
Unterstützung bei der Deinstallation und dem Entfernen von Artefakten, die zur Bereitstellung erforderlich sind, ermöglicht es Benutzern/Betriebern, einen Zielhost in seinen konfigurierten Zustand vor der Anwendung dieser Rolle zurückzuführen. Dies kann nützlich sein, um Knoten und Rollen wiederzuverwenden und vielleicht einen sanfteren/verwalteten Übergang zwischen Tool-Upgrades zu bieten.
Die folgenden Variablen können angepasst werden, um diesen Deinstallationsprozess zu verwalten:
perform_uninstall: <true | false>
(Standard: false
)
- Ob alle Artefakte und Überreste dieser
prometheus
-Installation auf einem Zielhost deinstalliert und entfernt werden sollen (siehe:handlers/main.yml
für Details).
Abhängigkeiten
- 0x0i.systemd
Beispiel-Playbook
Standardbeispiel:
- hosts: all
roles:
- role: 0x0I.prometheus
nur den Prometheus-Dienst installieren und verwalten (Deaktivieren der Alertmanager-Setup):
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
managed_services: ['prometheus']
bestimmte Version von Prometheus installieren:
- 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
Anpassung der Installations-, Konfigurations- und Datendirektorien von Prometheus und 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
Anpassung der globalen Abfrage- und Auswertungseinstellungen:
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
prometheus_config:
global:
scrape_interval: 30s
scrape_timeout: 30s
evaluation_interval: 30s
Anpassung der Konfiguration von Prometheus-Alarmen/Alertmanager:
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
prometheus_config:
alerting:
alertmanagers:
- scheme: https
static_configs:
- targets:
- "1.2.3.4:9093"
Erstellen von Aufnahme- und Alarmierungsregeln:
- 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
statische
Ziel-Abfrage-Konfiguration mit Abfrage- und Auswertungseinstellungen:
- 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
file_sd
dateibasierte Abfrage-Konfiguration mit Abfrage- und Auswertungseinstellungen:
- 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"]
dns
-basierte Zielabfrage-Konfiguration:
- 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
kubernetes
Zielabfrage-Konfiguration mit TLS- und Basisauthentifizierungseinstellungen:
- 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'
ec2
Zielabfrage-Konfiguration:
- 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
openstack
Zielabfrage-Konfiguration:
- 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
azure
Zielabfrage-Konfiguration:
- 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
marathon
Zielabfrage-Konfiguration:
- 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"
consul
Zielabfrage-Konfiguration:
- 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
Lizenz
MIT
Autoreninformationen
Diese Rolle wurde 2019 von O1.IO erstellt.
Prometheus - a multi-dimensional time-series data monitoring and alerting toolkit
ansible-galaxy install 0x0i.prometheus