timorunge.pmm_client
pmm_client
Dieses Role installiert und konfiguriert den Percona PMM Client.
Voraussetzungen
Diese Rolle benötigt Ansible 2.5.0 oder höher.
Du kannst pip verwenden, um eine stabile Version zu installieren (und festzulegen):
pip install ansible==2.8.4
Alle Plattformanforderungen sind in der Metadatei aufgeführt.
Installieren
ansible-galaxy install timorunge.pmm_client
Rollvariablen
Die Variablen, die an diese Rolle übergeben werden können, sowie eine kurze Beschreibung sind wie folgt. (Für alle Variablen sieh dir defaults/main.yml an)
# Definiere die Version
# Typ: Int
pmm_client_version: 1.17.1
# IP-Adresse und Port des pmm-Servers:
# Typ: Str
pmm_client_server_host: 172.20.0.10
# Typ: Int
pmm_client_server_port: 443
# Grundauthentifizierung deaktivieren:
# Typ: Bool
pmm_client_server_basic_auth: false
# SSL aktivieren:
# Typ: Bool
pmm_client_server_use_ssl: true
# Erzwungen, um den Clientnamen bei der Ersteinrichtung festzulegen
# Typ: Bool
pmm_client_force_setup: false
# Dienste definieren, die hinzugefügt oder entfernt werden sollen:
# Typ: Liste
pmm_client_add_services:
- linux:metrics
- mysql:metrics
- mongodb:metrics
- postgresql:metrics
pmm_client_remove_services:
- mysql:queries
# Dienste definieren, die gestartet oder gestoppt werden sollen:
# Typ: Liste
pmm_client_start_services:
- linux:metrics
- mysql:metrics
- mongodb:metrics
- postgresql:metrics
pmm_client_stop_services:
- mysql:queries
# Anmeldeinformationen für die MySQL-DB-Verbindung definieren:
# Typ: Dict
pmm_client_db:
mysql:
host: localhost
port: 3306
username: root
password: toor
Beispiele
1) Installiere den PMM Client ohne Grundauthentifizierung und mit deaktiviertem SSL
- hosts: all
become: yes
vars:
pmm_client_server_host: 172.20.0.10
pmm_client_server_port: 443
pmm_client_server_basic_auth: false
pmm_client_server_use_ssl: false
pmm_client_add_services:
- linux:metrics
pmm_client_start_services:
- linux:metrics
roles:
- timorunge.pmm_client
2) Installiere den PMM Client mit Grundauthentifizierung und aktiviertem SSL
- hosts: all
become: yes
vars:
pmm_client_server_host: 172.20.0.10
pmm_client_server_port: 443
pmm_client_server_basic_auth: true
pmm_client_server_basic_auth_username: admin
pmm_client_server_basic_auth_password: mySecurePassword
pmm_client_server_use_ssl: true
pmm_client_add_services:
- linux:metrics
pmm_client_start_services:
- linux:metrics
roles:
- timorunge.pmm_client
3) Installiere den PMM Client von einer definierten URL
- hosts: all
become: yes
vars:
pmm_client_version: 1.17.1
pmm_client_version_revision: 1
pmm_client_use_official_repo: false
pmm_client_debian_pkg: "https://www.percona.com/downloads/pmm/{{ pmm_client_version }}/binary/debian/{{ ansible_distribution_release }}/x86_64/pmm-client_{{ pmm_client_version }}-{{ pmm_client_version_revision }}.{{ ansible_distribution_release }}_amd64.deb"
roles:
- timorunge.pmm_client
4) Zwangsweise Einrichtung des PMM Clients
In einigen Situationen musst du die Einrichtung des PMM Clients zwangsweise durchführen. Z.B. wenn der Server unerreichbar war oder du eine neue Einrichtung mit einem zuvor verwendeten Hostnamen durchgeführt hast.
Du erhältst eine Nachricht wie die folgende:
TASK [timorunge.pmm-client : include_tasks] ********************************************************************************************************
included: ... ansible-pmm-client/tasks/server-config.yml for proxysql-aN8thi
TASK [timorunge.pmm-client : Überprüfen, ob der PMM Client konfiguriert ist] ****************************************************************************
fatal: [proxysql-aN8thi]: FAILED! => {"changed": false, "cmd": ["pmm-admin", "list"], "delta": "0:00:00.148803", "end": "2018-09-25 09:39:46.297917", "msg": "non-zero return code", "rc": 1, "start": "2018-09-25 09:39:46.149114", "stderr": "", "stderr_lines": [], "stdout": "PMM client ist nicht konfiguriert, Konfigurationsdatei fehlt. Bitte stelle sicher, dass du 'pmm-admin config' ausgeführt hast.", "stdout_lines": ["PMM client ist nicht konfiguriert, Konfigurationsdatei fehlt. Bitte stelle sicher, dass du 'pmm-admin config' ausgeführt hast."]}
...ignoring
TASK [timorunge.pmm-client : PMM Client konfigurieren - Basis-Modus] ************************************************************************************
fatal: [proxysql-aN8thi]: FAILED! => {"changed": true, "cmd": ["pmm-admin", "config", "--server", "172.20.0.10:80", "--client-name", "proxysql-aN8thi", "--config-file", "/usr/local/percona/pmm-client/pmm.yml"], "delta": "0:00:00.239708", "end": "2018-09-25 09:39:50.590280", "msg": "non-zero return code", "rc": 1, "start": "2018-09-25 09:39:50.350572", "stderr": "", "stderr_lines": [], "stdout": "Ein anderer Client mit dem gleichen Namen 'proxysql-aN8thi' wurde erkannt, seine Adresse ist 172.20.0.11.\nEr hat die aktiven Dienste, daher ist dieser Name nicht verfügbar.\n\nGib den anderen Namen mit dem Flag --client-name an.\n\nFalls dies der korrekte Client-Knoten ist, der zuvor mit einem unerreichbaren PMM-Server deinstalliert wurde,\nkannst du das Flag --force hinzufügen, um fortzufahren. Verwende dieses Flag nicht, es sei denn, es ist notwendig.\nDie verwaisten Remote-Dienste werden automatisch entfernt.", "stdout_lines": ["Ein anderer Client mit dem gleichen Namen 'proxysql-aN8thi' wurde erkannt, seine Adresse ist 172.20.0.11.", "Er hat die aktiven Dienste, daher ist dieser Name nicht verfügbar.", "", "Gib den anderen Namen mit dem Flag --client-name an.", "", "Falls dies der korrekte Client-Knoten ist, der zuvor mit einem unerreichbaren PMM-Server deinstalliert wurde,", "kannst du das Flag --force hinzufügen, um fortzufahren. Verwende dieses Flag nicht, es sei denn, es ist notwendig.", "Die verwaisten Remote-Dienste werden automatisch entfernt."]}
um erneut zu versuchen, verwende: --limit @... main.retry
PLAY RECAP *****************************************************************************************************************************************
proxysql-aN8thi : ok=9 changed=0 unreachable=0 failed=1
Im Grunde hast du zwei Optionen:
1) Über die YAML-Konfiguration
- hosts: all
become: yes
vars:
pmm_client_force_setup: true
roles:
- timorunge.pmm_client
2) Über die Befehlszeile
Das ist die empfohlene Methode.
$ ansible-playbook main.yml -i inventory -b --limit "proxysql-aN8thi" --diff -e "{ pmm_client_force_setup: true }"
...
TASK [timorunge.pmm-client : Überprüfen, ob der PMM Client konfiguriert ist] ****************************************************************************
fatal: [proxysql-aN8thi{"changed": false, "cmd": ["pmm-admin", "list"], "delta": "0:00:00.361021", "end": "2018-09-25 09:51:30.675725", "msg": "non-zero return code", "rc": 1, "start": "2018-09-25 09:51:30.314704", "stderr": "", "stderr_lines": [], "stdout": "PMM client ist nicht konfiguriert, Konfigurationsdatei fehlt. Bitte stelle sicher, dass du 'pmm-admin config' ausgeführt hast.", "stdout_lines": ["PMM client ist nicht konfiguriert, Konfigurationsdatei fehlt. Bitte stelle sicher, dass du 'pmm-admin config' ausgeführt hast."]}
...ignoring
TASK [timorunge.pmm-client : PMM Client konfigurieren - Basis-Modus] ************************************************************************************
changed: [proxysql-aN8thi]
...
TASK [timorunge.pmm-client : Hinzufügen von Linux- und ProxySQL-Diensten zur Überwachung] *************************************************************
changed: [proxysql-aN8thi] => (item=linux:metrics)
changed: [proxysql-aN8thi] => (item=proxysql:metrics)
...
proxysql-aN8thi : ok=13 changed=2 unreachable=0 failed=0
5) Deinstalliere den PMM Client
- hosts: all
become: yes
vars:
pmm_client_enabled: false
roles:
- timorunge.pmm_client
Testen
Tests werden mit Docker und docker_test_runner durchgeführt, die die folgenden Container mit unterschiedlichen Umgebungsbedingungen bereitstellt:
- CentOS 7
- Debian 9.4 (Stretch)
- Ubuntu 16.04 (Xenial Xerus)
- Ubuntu 18.04 (Bionic Beaver)
Ansible 2.8.4 ist auf allen Containern installiert und ein Test-Playbook wird angewendet.
Für weitere Details und zusätzliche Überprüfungen sieh dir bitte die docker_test_runner-Konfiguration und den Docker-Entrypoint an.
# Lokales Testen:
curl https://raw.githubusercontent.com/timorunge/docker-test-runner/master/install.sh | sh
./docker_test_runner.py -f tests/docker_test_runner.yml
Da die Build-Zeit bei Travis für öffentliche Repositorys begrenzt ist, sind die automatisierten Tests auf folgende Systeme beschränkt:
- CentOS 7
- Debian 9.4 (Stretch)
- Ubuntu 16.04 (Xenial Xerus)
- Ubuntu 18.04 (Bionic Beaver)
Abhängigkeiten
Keine
Lizenz
BSD 3-Klausel "Neu" oder "Überarbeitet" Lizenz
Autor Informationen
- Basierend auf der Ansible-Rolle von Chris Sam
- Stark modifiziert von: Timo Runge
Percona PMM Client for Debian and RedHat based distributions
ansible-galaxy install timorunge.pmm_client