Wir nutzen Cookies, um Ihnen eine optimale Nutzung dieser Webseite zu ermöglichen. Mehr Informationen finden Sie im Datenschutzhinweis. Wir nehmen an, dass Sie damit einverstanden sind, falls Sie diese Webseite weiter besuchen.

Ihre Cookie-Einstellungen
Ihre Einstellungen wurden aktualisiert.
Damit die Änderungen wirksam werden, löschen Sie bitte Ihre Browser-Cookies und den Cache und laden dann die Seite neu.

Die Checkmk-Konferenz #6 wird virtuell! Mehr Infos hier!

Amazon Web Services überwachen

1. Einleitung

Nach einer Umfrage unter unseren Anwendern ist Amazon Web Services aktuell der wichtigste Anbieter von Cloud-basierten Services. Und dass Checkmk hier eine exzellente Überwachung bereitstellen muss, versteht sich von selbst.

Checkmk enthält daher ein umfangreiches Monitoring von AWS, welches aus einem Konnektor zu AWS und einer stattlichen Sammlung von Check-Plugins besteht, die für Sie verschiedenste Metriken und Zustände abrufen und auswerten. Aufgrund der Menge an Check-Plugins hier nur einzelne, um die AWS-Bereiche aufzuzeigen, die Checkmk derzeit überwachen kann:

Eine vollständige aktuelle Liste aller Plugins finden Sie im Katalog der Check-Plugins.

2. Konkrete Umsetzung der AWS-Überwachung

2.1. Hosts und Services

In Checkmk ordnen sich alle zu überwachenden Objekte in eine hierachische Struktur von Hosts und Services ein. Nun gibt es bei Cloud-basierten Diensten das Konzept von Hosts nicht. Um die Einfachheit und Konsistenz von Checkmk zu bewahren, bilden wir dennoch AWS-Objekte auf das Schema Host/Service ab.

Wie das geht, zeigt am besten ein Beispiel: In einer Region sind mehrere EC2-Instanzen konfiguriert. Einer EC2 sind üblicherweise EBS zugeordnet. Diese Konstellation sieht in Checkmk wie folgt aus:

  • Es gibt einen Host, der dem AWS-Account entspricht. Dieser gibt eine Übersicht aller EC2-Instanzen und deren Status als Service.
  • Die EC2-Instanzen selbst sind wiederum eigene Hosts.
  • Auf diesen EC2-Hosts finden Sie Services mit den eigentlichen Metriken.
  • Die EBS werden als eine Art Festplatten interpretiert und liefern dementsprechend Metriken zu I/O (z. B. gelesene oder geschriebene Anzahl an Bytes). Dazu existieren in Checkmk eigene Services mit dem Namen AWS/EBS Disk IO pro EBS, die der EC2-Instanz zugeordnet werden.

2.2. Zugriff auf AWS

Natürlich erlaubt AWS keine Installation eines Checkmk-Agenten und dies ist auch nicht notwendig, da es eine HTTP-basierte API bereitstellt, über die auch Monitoring-Daten abrufbar sind.

Checkmk greift über auf diese API über den „Spezialagenten“ agent_aws zu, welcher an die Stelle des Checkmk-Agenten tritt, aber anders als dieser lokal auf dem Checkmk-Server ausgeführt wird.

3. AWS vorbereiten

3.1. Benutzer anlegen

Um die Überwachung per Checkmk zu ermöglichen, legen Sie am besten dafür einen speziellen AWS-User unterhalb Ihres Root-Accounts an. Loggen Sie sich dafür bei AWS als Root-User ein und navigieren Sie zu Security, Identity, & Compliance ➳ IAM (Identity and Access Management). Gehen Sie hier auf Users und legen Sie mit Add User einen neuen Benutzer an. Als Benutzername wählen Sie z. B. check-mk. Wichtig ist, dass Sie bei Access Type den Programmatic Access auswählen.

3.2. Berechtigungen

Für das Monitoring sollte der Benutzer auf keinen Fall irgendwelche Änderungsrechte bekommen. Sie können dem Benutzer check-mk einfach die einizige Policy ReadOnlyAccess zuordnen (oder Sie machen sich die Mühe, den Account mit detaillierteren Policies genauer einzuschränken):

3.3. Zugriff auf Billing-Informationen

Wenn Sie möchten, dass Checkmk auch Lesezugriff auf die Abrechnungsinformationen bekommt (um den globalen Check Costs and Usage ausführen zu können) benötigen Sie für Ihren AWS-User eine weitere Policy, die Sie allerdings erst selbst definieren müssen.

Wählen Sie dazu unter Security, Identity, & Compliance ➳ IAM ➳ Policies den Knopf Create Policy. Wählen Sie unter Select a Service ➳ Service ➳ Choose a Service den Service Billing aus. Unter Actions kreuzen Sie die Checkbox Read an. Mit dem Knopf Review geht es zum Schritt zwei. Legen Sie dort als Name den Namen BillingViewAccess aus und speichern Sie mit dem Knopf Create policy.

Diese neue Policy müssen Sie jetzt noch dem Benutzer hinzufügen. Dazu gehen Sie wieder zu Security, Identity, & Compliance ➳ IAM ➳ Policies, suchen im Suchfeld Filter Policies nach BillingViewAccess, wählen diese durch Klick in den Kreis link aus und gehen dann auf Policy actions ➳ Attach. Hier finden Sie Ihren check-mk-User, den Sie auswählen und mit Attache policy bestätigen. Das müsste dann mit folgender Meldung erfolgreich ausgeführt werden:

3.4. Schlüssel

Nach dem Abschluss des Anlegens des Benutzers wird für Sie automatisch ein Zugangsschlüssel erzeugt. Achtung: Das Secret des Schlüssels wird nur ein einziges mal – direkt nach dem Erzeugen – angezeigt. Kopieren Sie daher unbedingt den Schlüssel und legen ihn z. B. im Checkmk-Passwortspeicher ab. Alternativ geben Sie ihn im Klartext in der Regel an (siehe unten). Für Checkmk benötigen Sie neben dem Secret noch die Access Key ID. Der Name des Benutzers (bei uns check-mk) spielt hier keine Rolle.

Falls Sie das Secret trotzdem einmal verlieren sollten, können Sie für den Benutzer einen neuen Access-Key anlegen und bekommen ein neues Secret:

4. Monitoring in Checkmk konfigurieren

4.1. Host für AWS in Checkmk anlegen

Legen Sie für die Überwachung von AWS nun einen Host in Checkmk an. Den Hostnamen können Sie nach Belieben vergeben. Wichtig: Da AWS als Dienst keine IP-Adresse oder DNS-Namen hat (den Zugriff macht der Spezial-Agent von selbst), müssen Sie die IP Address Family auf No IP einstellen.

4.2. Regel für AWS-Agenten anlegen

AWS kann nicht über den normalen Checkmk-Agenten abgefragt werden. Richten Sie daher jetzt den AWS-Spezialagenten ein. Dazu legen Sie unter Host & Service Parameters ➳ Datasource Programs ➳ Amazon Web Services (AWS) eine Regel an, deren Bedingungen ausschließlich auf den gerade angelegten AWS-Host greifen.

Beim eigentlichen Inhalt der Regel finden Sie zunächst die Angaben für den Login. Hier tragen Sie Access Key ID des angelegten AWS-User check-mk ein. Auch wählen Sie hier, welche globalen Daten Sie überwachen möchten, also solche die unabhängig von einer Region sind. Das sind aktuell nur die Daten über die Kosten:

Die eigentlich interessanten Daten sind Regionen zugeordnet. Wählen Sie also hier Ihre AWS-Region(en) aus:

Unter Services per region to monitor legen Sie nun fest, welche Informationen Sie in diesen Regionen abrufen möchten. In der Standardkonfiguration alle AWS Web-Services und die Überwachung derer Limits uneingeschränkt aktiviert. Der Übersichtshalber wurden in dem Screenshot alle bis auf einer deaktiviert:

Diese können Sie dann pro Web-Service oder global mit Restrict monitoring services by one of these tags wieder einschränken. Wenn Sie pro Web-Service einschränken, wird damit immer die globale Option überschrieben. Ihnen steht hier zusätzlich zu den AWS Tags auch noch die Möglichkeit zur Verfügung, explizite Namen anzugeben:

4.3. Services auf dem AWS-Host selbst

Gehen Sie nun zu der Serviceerkennung des neu angelegten AWS-Host, wo WATO nun etliche Services finden sollte. Nachdem Sie die Services hinzugefügt haben, sieht das nach einem Activate Changes etwa so aus:

4.4. Hosts für die EC2-Instanzen anlegen

Services, die EC2-Instanzen zugeordnet sind, werden nicht dem AWS-Host zugeordnet sondern sogenannten Piggyback-Hosts. Dies funktioniert so, dass Daten, die vom AWS-Host abgerufen wurden, an diese Hosts verteilt werden und diese ohne eigene Monitoringagenten arbeiten. Dabei wird jeder EC2-Instanz ein Piggy-Host zugeordnet, welche nach dem privaten DNS-Namen er EC2-Instanz benannt sind.

Die Piggy-Hosts werden von Checkmk nicht automatisch angelegt. Legen Sie diese Hosts entweder von Hand an oder – ab Version 1.6.0 – optional mit dem neuen Dynamic Configuration Daemon (DCD). Wichtig dabei ist, dass die Namen der Hosts exakt mit den privaten DNS-Namen der EC2-Instanz übereinstimmen – und zwar auch die Groß-/Kleinschreibung!

Übrigens: mit dem Hilfsskript find_piggy_orphans aus dem Treasures-Verzeichnis finden Sie alle Piggyhosts, für es Daten gibt, die aber noch nicht als Host im Checkmk angelegt sind:

OMD[mysite]:~$ share/doc/check_mk/treasures/find_piggy_orphans
ip-172-31-44-50.eu-central-1.compute.internal
ip-172-31-44-51.eu-central-1.compute.internal

Konfigurieren Sie die EC2-Hosts ohne IP-Adresse (analog zum Azure-Host) und wählen Sie als Agent No Agent aus.

4.5. Hosts für ELB (Classic Load Balancer)

Auch die Services für die ELB werden Piggy-Hosts zugeordnet. Die Namen dafür entsprechen deren DNS-Namen.

4.6. Limits überwachen

Einige Web-Services von AWS bringen Limits mit und Checkmk kann diese auch überwachen. Dazu gehören zu Beispiel diese:

Sobald ein solches Check-Plugin Services erzeugt und diesen später prüft, werden immer alle Elemente des Web-Services geholt. Nur so kann Checkmk sinnvoll die aktuelle Auslastung zu diesen Limits berechnen und entsprechend Schwellwerte prüfen. Das gilt auch dann, wenn Sie in der Konfiguration die Daten auf bestimmte Namen oder Tags einschränken.

In der Grundkonfiguration sind die Limits automatisch aktiviert. Wenn Sie also die zu holenden Daten in der [monitoring_aws#agent_rule|Regel zu dem Spezialagenten] einschränken, weil Sie die zu übertragenden Daten reduzieren wollen, schalten Sie ebenfalls auch die Limits ab.

4.7. Die weiteren Services

Die weiteren Services von AWS werden wie folgt zugeordnet:

Service Zuordnung
CE Costs & Usage Beim AWS-Host
EBS Block Storages Werden der EC2-Instanz angefügt, sofern diese der Instanz gehören, ansonsten dem AWS-Host
S3 Simple Storages Beim AWS-Host
RD Relational Databases Beim AWS-Host