utr – Ansible-like UptimeRobot-Management

news tools

utr ist ein CLI-Tool für UptimeRobot. Im Gegensatz zu anderen Tools können damit Monitore, Wartungsfenster, Alarmkontakte und Statusseiten zustandsbasiert, ähnlich wie bei Ansible, verwaltet werden. Die gewünschte Konfiguration wird in YAML-Dateien definiert und utr sorgt idempotent dafür, dass der Ist-Zustand automatisch dem Soll-Zustand entspricht.

Benötigt werden lediglich Python 3 und ein gültiger UptimeRobot-API-Key, der wahlweise direkt über die Option --api_key oder per Datei (Standard: ~/.uptimerobot) übergeben wird. Das Tool lässt sich mittels pip install --user uptimerobot-cli installieren. Der Aufruf von utr --help zeigt alle verfügbaren Befehle und Optionen.

Es wurde in der Linuxfabrik entwickelt, ist Open Source und steht unter der UNLICENSE. Details und Dokumentation finden sich auf github.com/linuxfabrik.

Schritt 1: YAML-Template erstellen

Monitore, Wartungsfenster (mwindows) und Alarmkontakte werden in einer oder mehreren YAML-Dateien definiert. Beispiel:

mwindows:
  - type: 'weekly'
    value: 'wed'
    start_time: '03:30'
    end_time: '05:30'
    status: 'active'
    state: 'present'

monitors:
  - prefix: 'prod'
    url: 'https://www.example.com/'
    interval: 30
    http_method: 'get'
    type: 'keyw'
    keyword_type: 'notex'
    keyword_case_type: 'ci'
    keyword_value: 'Example Inc.'
    mwindows:
      - friendly_name: 'weekly wed 03:30-05:30'
    state: 'present'

Weitere Details zur YAML-Syntax finden sich in der YAML-Dokumentation des Projekts.

Schritt 2: Konfiguration anwenden

Mithilfe von apply wird die YAML-Definition auf UptimeRobot angewendet:

utr apply config.yml

Create-, Update- und Delete-Aktionen werden idempotent ausgeführt, um den gewünschten Zustand in UptimeRobot herzustellen.

Ad-hoc-Befehle

Für schnelle Abfragen oder Bulk-Updates ohne YAML stehen get und set zur Verfügung. Beispiele:

  • Account-Details, Rate-Limits etc. anzeigen: utr get account
  • Liste aller Monitore anzeigen: utr get monitors --output=table
  • Alle "example"-Monitore pausieren: utr set monitors --search=example --status=paused

Damit lassen sich einzelne Ressourcen im Handumdrehen verwalten.

Vorheriger Beitrag Nächster Beitrag