Die hier vorgestellte Funktionalität ist ein experimentelles Feature, mit dem Sie frühzeitig Zugriff auf kommende Checkmk-Funktionen erhalten, sodass Sie diese neuen Funktionen testen und Feedback geben können, bevor das Feature vollständig stabil ist. In diesem Zustand ist es möglich, dass Funktionen nicht nur hinzugefügt, sondern auch so geändert werden, dass eine bestehende Konfiguration obsolet ist und Sie diese neu erstellen müssen. |
1. Einleitung
In diesem Artikel erfahren Sie, wie Sie mit dem neuen Agentenplugin mk-oracle-v2 Oracle-Datenbanken überwachen können.
Wenn Sie Informationen zu unserem alten Agentenplugin mk_oracle suchen, schauen Sie bitte in den gleichnamigen Artikel im 2.4.0er-Zweig des Handbuchs.
So können Sie mit dem Agentenplugin nicht nur Tablespaces oder die aktiven Sitzungen einer Datenbank abrufen, sondern zusätzlich noch viele andere Metriken. Eine vollständige Liste der Möglichkeiten, wie Sie Oracle mit unseren Check-Plugins überwachen können, finden Sie im Katalog der Check-Plugins.
Die Ausgaben von mk-oracle-v2 gleichen denen des alten Plugins, so das exakt die selben Check-Plugins weiterverwendet werden.
Das neue Agentenplugin für das Monitoring von Oracle ist ein ausführbares Binary.
Es wird bereitgestellt für IBM AIX (64-Bit POWER), Linux ( |
1.1. Überblick über diesen Artikel
Falls Sie nicht (fast) den ganzen langen Artikel lesen möchten, kommen hier ein paar Links mit Abkürzungen. Wenn Sie allerdings erstmalig das Oracle-Monitoring mit Checkmk aufsetzen, sollten Sie sich den Artikel vollständig durcharbeiten, um alle Möglichkeiten kennenzulernen.
Wie Sie den Oracle Instant Client (OIC) installieren erfahren Sie im Kapitel „Oracle Instant Client (OIC) bereitstellen“.
Benutzer der Agentenbäckerei in den kommerziellen Editionen von Checkmk bekommen im Kapitel „Konfiguration für das Agentenplugin erstellen“ eine Erklärung der wichtigsten Optionen. Im Referenzteil dieses Artikels gehen wir dann nochmal auf alle Konfigurationsoptionen ein und zeigen an dieser Stelle auch, zu welchen Einträgen die Optionen aus der Regel Oracle databases (Experimental) in der Konfigurationsdatei
mk-oracle.ymlführt.Sollten Ihnen die Datenpunkte, die das Agentenplugin „out of the box“ mitbringt, nicht genügen, können Sie Ihre Datenbanken auch per benutzerdefinierten SQL-Abfragen (Custom SQLs) überwachen.
Benutzer, die vom
mk_oracleaufmk-oracle-v2umsteigen möchten, können unsere Skripte zur Regel- und Konfigurationsmigration verwenden, um sich den Umstieg zu erleichtern.
1.2. Wie funktioniert das Oracle-Monitoring mit Checkmk?
Um Oracle-Instanzen und deren -Datenbanken mit Checkmk zu überwachen, müssen auf dem jeweiligen Host der Checkmk-Agent und das Agentenplugin mk-oracle-v2 installiert werden.
Das Agentenplugin benötigt eine Konfiguration, welche Sie unter dem Namen mk-oracle.yml im Konfigurationsverzeichnis ablegen müssen.
Außerdem ist das Agentenplugin auf Bibliotheken des Oracle Instant Client (OIC) angewiesen.
Dieser muss also ebenfalls auf dem Host verfügbar sein.
Wie Sie OIC installieren können, erfahren Sie im Kapitel Voraussetzungen auf dem Oracle-Host schaffen.
2. Voraussetzungen auf dem Oracle-Host schaffen
Auf jedem Host auf dem sie Oracle-Datenbanken bzw. -Instanzen überwachen möchten, müssen Sie zwei Voraussetzungen schaffen.
Die Client-Bibliothek Oracle Instant Client (OIC) muss für das Agentenplugin bereitgestellt werden. Wie Sie das erledigen können, lesen Sie im entsprechenden Kapitel.
-
Dem Agentenplugin
mk-oracle-v2muss Zugriff auf Ihre Oracle-Instanzen beziehungsweise -Datenbanken gewährt werden. Dafür haben Sie zwei verschiedene Möglichkeiten:Sie können auf dem Host einen Benutzer samt Passwort erzeugen, der ausschließlich für das Monitoring durch Checkmk verwendet wird. Diesen Weg erklären wir im Kapitel Datenbank-Benutzer erstellen.
Alternativ können Sie die Oracle Wallet nutzen.
2.1. Oracle Instant Client (OIC) bereitstellen
Das Agentenplugin mk-oracle-v2 benötigt die Bibliotheken des Oracle Instant Client (OIC) um zu funktionieren.
Sie haben drei Möglichkeiten, dass OIC zur Verfügung zu stellen.
Sie können OIC exklusiv für das Agentenplugin installieren. Dies ist die von uns empfohlene Methode, die wir hier beschreiben.
Alternativ können Sie OIC global auf dem Host installieren.
Falls OIC bereits auf dem Host installiert ist, und Sie diese Installation für das Monitoring durch Checkmk verwenden wollen, können Sie dem Agentenplugin mit einem Eintrag in der Konfiguration mitteilen, wo OIC zu finden ist.
Laden Sie zuerst das für Ihren Host passende Paket von der Seite Oracle Instant Client Downloads im ZIP-Format herunter.
- Linux
Für ein Linux x86-64 nehmen Sie beispielsweise das Basic Light Package (ZIP).
Prüfen Sie, wie das Plugin-Verzeichnis des Checkmk-Agenten auf Ihren Host lautet:
Entpacken Sie die Archivdatei in eben jenes Plugin-Verzeichnis:
Da einige Zip-Dateien von Oracle Linux-Benutzer-IDs enthalten und damit möglicherweise ein vorhandener Benutzer mit dieser ID Eigentümer der Client-Bibliothek würde, ändern Sie sicherheitshalber Eigentümer und Zugriffsrechte:
- Windows
Für Windows nehmen Sie beispielsweise das Basic Light Package (ZIP).
Entpacken Sie die das Archiv in das Unterverzeichnis
libexec\mk-oracle-v2\oicdes Plugin-Verzeichnisses.Standardmäßig lautet das Verzeichnis für den OIC auf Windows-Host also
%PROGRAMDATA%\checkmk\agent\plugins\libexec\mk-oracle-v2\oic.
Auf einem Linux-Host können Sie den Oracle Instant Client alternativ auch beispielsweise auch in /opt/ installieren.
Auf einem Windows-Host können Sie den Oracle Instant Client auch in ein beliebiges Verzeichnis installieren.
Dieses Verzeichnis müssen dann in der Umgebungsvariable PATH von Windows angeben.
2.2. Zugriffsrechte für das Agentenplugin gewähren
Dem Agentenplugin mk-oracle-v2 muss Zugriff auf Ihre Oracle-Instanzen bzw. -Datenbanken gewährt werden.
Dies können Sie entweder über einen Datenbank-Benutzer oder die Oracle Wallet machen.
- Einfacher Datenbank-Benutzer
Wenn Sie für das Monitoring einen regulären Benutzer einrichten wollen, dann empfehlen wir, eben diesen Benutzer ausschließlich für Checkmk zu verwenden.
Verbinden Sie sich als erstes mit Ihren Oracle-Host und wechseln Sie zu dem Benutzer, unter dessen Kennung die Oracle-Datenbank läuft. Meist ist dies
oracle:Hinterlegen Sie die Instanz, mit der sich
sqlplusverbinden soll in einer Umgebungsvariablen:Starten Sie
sqlplus. Geben Sie dabei an, mit welcher Rollesqlplusstarten soll.Erzeugen Sie jetzt einen Benutzer, welcher ausschließlich für das Monitoring von Oracle verwendet werden soll. Die Berechtigungen gelten für alle existierenden und zukünftigen Datenbanken.
- Datenbank-Benutzer (Multitenant)
Wenn Sie für das Monitoring einen Benutzer einrichten wollen, dann empfehlen wir, eben diesen Benutzer ausschließlich für Checkmk zu verwenden.
Verbinden Sie sich als erstes mit Ihren Oracle-Host und wechseln Sie zu dem Benutzer, unter dessen Kennung die Oracle-Datenbank läuft. Meist ist dies
oracle:Hinterlegen Sie die Instanz, mit der sich
sqlplusverbinden soll in einer Umgebungsvariablen:Starten Sie
sqlplus. Geben Sie dabei an, mit welcher Rollesqlplusstarten soll.Erzeugen Sie jetzt einen Benutzer, welcher ausschließlich für das Monitoring von Oracle verwendet werden soll. Das Präfix
C##sorgt dafür, dass der Benutzer alle Datenbanken der Instanz sehen kann. Die Berechtigungen gelten für alle existierenden und zukünftigen Datenbanken.- Wallet
Alternativ dazu, den Benutzer direkt und mit Passwort in einer Konfigurationsdatei anzugeben, können Sie auch das Oracle Wallet nutzen. Das hat den Vorteil, dass Sie nicht mehr die Zugangsdaten unverschlüsselt sowohl auf dem Checkmk-Server als auch auf dem Oracle-Host ablegen müssen. Denn selbst wenn Sie die Rechte der Konfigurationsdatei auf dem Oracle-Host entsprechend angepasst haben, haben die Zugangsdaten dennoch den Server verlassen und befinden sich auf dem Checkmk-Server, sofern Sie die Agentenbäckerei nutzen.
Das Oracle Wallet wiederum legt die Zugangsdaten verschlüsselt auf dem zu überwachenden Host ab, sodass sie benutzt werden können, aber keine Login-Daten explizit bekannt gemacht werden müssen. Checkmk kann dieses Wallet nutzen, sodass die Zugangsdaten prinzipiell nur dem Datenbank-Administrator (DBA) bekannt sein müssen. Dazu legen Sie — oder der DBA — ein Wallet auf dem entsprechenden Server an und legen diese im Konfigurationsverzeichnis in einer Datei namens
oracle_walletab.Auf diese Datei wird das Agentenplugin später immer dann zugreifen, wenn eine Verbindung zu einer Instanz hergestellt werden soll. Damit die nötigen Benutzerdaten auch gefunden werden, müssen Sie diese einmalig in das Wallet eintragen. In dem folgenden Beispiel fügen Sie also den Benutzer
checkmkfür die InstanzMYINST1hinzu:Damit das Agentenplugin weiß, wo es nach dem Wallet suchen muss, muss es zwei Dateien finden. Die erste Datei ist
sqlnet.orain welcher hinterlegt wird, wo das Wallet zu finden ist. Die zweite Datei —tnsnames.ora— bestimmt die Adresse der Instanz, sodass diese auch über ihren Alias angesprochen werden kann. Damit das Agentenplugin diese Dateien findet, können Sie den Pfad unter Linux, Solaris und AIX über die UmgebungsvariableTNS_ADMINsetzen. Das ist vor allem dann von Vorteil, wenn die Dateien bereits existieren. Alternativ können Sie sie auch explizit anlegen. Unter Windows ist es sogar erforderlich, dass Sie diese manuell bestimmen.Legen Sie zunächst die Datei
sqlnet.oraan. In dieser Datei sucht das Agentenplugin alternativ nach den Zugangsdaten, sodass hier also der korrekte Pfad zu der eben erstellten Wallet-Datei angegeben werden muss. Achten Sie dabei darauf, dass Sie den ParameterSQLNET.WALLET_OVERRIDEaufTRUEsetzen:/etc/check_mk/sqlnet.oraLOG_DIRECTORY_CLIENT = /var/log/check_mk/oracle_client DIAG_ADR_ENABLED = OFF SQLNET.WALLET_OVERRIDE = TRUE WALLET_LOCATION = (SOURCE= (METHOD = FILE) (METHOD_DATA = (DIRECTORY=/etc/check_mk/oracle_wallet)) )Jetzt weiß das Plugin, welche Zugangsdaten benutzt werden sollen. Damit es auch die korrekte Adresse ansteuert, legen Sie als Datei die
tnsnames.oraan. Die genaue Syntax können Sie der Oracle-Dokumentation entnehmen, aber als Beispiel könnte die Datei so aussehen:/etc/check_mk/tnsnames.oraMYINST1 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = MYINST1_ALIAS) ) )Sie können dem Wallet natürlich zu einem späteren Zeitpunkt weitere Zugangsdaten hinzufügen. Lediglich die Datei
tnsnames.oramuss dann gegebenenfalls erweitert werden.Zum Abschluss ändern Sie die Berechtigungen der in diesem Abschnitt manuell erstellten Dateien und Verzeichnisse, damit die Zugriffsrechte bei der Ausführung richtig gesetzt sind. Das Agentenplugin, das als
rootausgeführt wird, wechselt zum Eigentümer der Oracle-Binaries (z.B.$ORACLE_HOME/bin/sqlplus), bevor es diese ausführt. Zumindest die Gruppe des Eigentümers der Oracle-Binaries benötigt daher lesenden Zugriff auf die manuell erstellten Dateien in/etc/check_mk/. Im folgenden Beispiel nehmen wir an, dass es sich bei der Gruppe umoinstallhandelt.Die folgenden Befehle ändern die Gruppe zu
oinstall:Diese Befehle stellen dann sicher, dass die Gruppe das Verzeichnis
oracle_walletsamt Inhalt lesen kann:Anschließend sollten die Berechtigungen etwa wie folgt aussehen:
Die Befehlsausgabe zeigt nur Dateien und Verzeichnisse, die für die Konfiguration der Oracle Wallet relevant sind.
3. Konfiguration des Agentenplugins
Nachdem Sie auf dem Oracle-Host die Voraussetzungen für das Monitoring mit Checkmk geschaffen haben, müssen Sie nun eine Konfiguration für das Agentenplugin erstellen.
Benutzer unserer kommerziellen Editionen und der Agentenbäckerei finden im Kapitel Konfiguration für das Agentenplugin per Regel erstellen was zu tun ist.
Falls Sie Ihre Oracle-Instanzen mit
Checkmk Community überwachen möchten oder die Konfiguration aus anderen Gründen manuell vornehmen möchten, lesen Sie jetzt bitte das Kapitel Monitoring von Oracle manuell einrichten.
3.1. Per Agentenregel und Agentenbäckerei
Benutzer einer kommerziellen Edition von Checkmk können das Agentenplugin bequem über die Agentenregel Oracle databases (Experimental) konfigurieren.
In diesem Kapitel konzentrieren wir uns dabei auf die Bereiche Authentifizierung, Verbindungsoptionen und datenbankspezifische Anmeldedaten.
Alle weiteren Optionen, die der Regelsatz Oracle databases (Experimental) werden entweder schon hinreichend in der Inline-Hilfe erklärt oder im Referenzteil dieses Artikels erläutert.
Öffnen Sie jetzt also das Setup-Menü Ihrer Checkmk-Instanz und suchen Sie dort nach Oracle databases (Experimental) und öffnen Sie den Regelsatz. Klicken Sie auf Add rule und beginnen Sie mit der Konfigurations der Authentifizierungsmethode.
Im Referenzteil finden Sie Hinweise zu den Additional options.
Authentifizierungstyp einstellen
Je nachdem für welchen Weg Sie sich im Kapitel Voraussetzungen auf dem Oracle-Host schaffen entschieden haben, wählen Sie unter Authentication type die passende Option aus und tragen die zugehörigen Daten ein.

Optional haben Sie über Role die Möglichkeit anzugeben, welche Rolle das Agentenplugin bei der Authentifizierung annehmen soll. Und wenn Sie für die ASM authentication ein anderer Benutzername verwendet werden soll, können Sie auch das hier eintragen.
Verbindungsoptionen konfigurieren
Im nächsten Block können Sie Details zu den Verbindungsoptionen konfigurieren.
Neben dem Host-Namen und dem Port Ihrer Oracle-Instanz, können Sie auch den TNS_ADMIN directory path angeben.
Wenn Sie hier nichts eintragen, geht mk-oracle-v2 davon aus, das es sich Dabei um das Konfigurationsverzeichnis des Agenten handelt.
Mit der Option Oracle local registry path können Sie dem Agentenplugin mitteilen, wo die lokalen Registrierungsdateien Ihres Oracle-Cluster liegen.
Die Instanzerkennung des Agentenplugins wird dann diese Informationen heranziehen, und die darin beschriebenen Instanzen überwachen.
Datenbankspezifische Anmeldedaten
Gerade in größeren Umgebungen wird es mitunter nötig sein, dass verschiedene Instanzen Ihrer Oracle-Umgebung mit unterschiedlichen Zugangsdaten und Verbindungsoptionen ausgestattet sind. Dafür ist die Sektion Databases to monitor da. Hier können Sie instanzspezifische Anmeldedaten und Verbindungsoptionen angeben. Ihre Angaben unter Default settings beziehen sich dann nur noch auf die Instanzen, welche Sie unter Databases to monitor nicht explizit angegeben haben.
Weitere Konfigurationsmöglichkeiten
Alle weiteren Optionen der Regel Oracle databases (Experimental) werden im Referenzteil im Kapitel Konfigurationsoptionen beschrieben.
Bedingungen einstellen
Denken Sie zum Abschluss daran Ihre neue Regel über die Conditions auf Ihre Oracle-Hosts einzuschränken.
Speichern Sie nun die Regel, backen Sie das neue Agentenpaket und installieren Sie dieses auf dem Oracle-Host. Übertragen Sie das neue Agentenpaket nun auch Ihren Oracle-Host und installieren Sie es. Danach können Sie in Checkmk die Service-Erkennung auf Ihrem Oracle-Host durchführen.
3.2. Monitoring von Oracle manuell einrichten
Dieses Kapitel richtet sich an all diejenigen, die
Checkmk Community verwenden oder auf die Verwendung der Agentenbäckerei verzichten möchten.
Sobald Sie die Voraussetzungen erfüllt haben, müssen Sie das Agentenplugin auf dem Oracle-Host installieren. An dieser Stelle sei bereits der Hinweis erlaubt, dass das etwas anders funktioniert, als Sie es womöglich von anderen Agentenplugins gewohnt sind.
Zu guter Letzt müssen Sie dem Agentenplugin noch eine Konfiguration mit auf den Weg geben.
Zuerst gehen wir nochmal die Voraussetzungen durch.
Voraussetzungen für die manuelle Einrichtung
Bevor Sie mit der manuellen Einrichtung starten können, prüfen Sie, ob die folgenden beiden Voraussetzungen erfüllt sind:
Auf dem Oracle-Host muss der Checkmk-Agent bereits installiert und registriert sein. Wie Sie das bewerkstelligen, erklären wir bereits in den Artikeln Linux überwachen bzw. Windows überwachen.
Außerdem müssen Sie bereits dafür gesorgt haben, dass der Oracle Instant Client auf dem Host verfügbar ist.
Sobald alle Voraussetzungen erfüllt sind, können Sie sich daran machen, das Agentenplugin zu installieren.
Agentenplugin installieren
Das Agentenplugin mk-oracle-v2 kommt mit zwei Hilfsprogrammen daher, die letzten Endes nur dafür da sind, um mk-oracle-v2 selbst im synchronen oder im asynchronen Modus zu starten.
Diese beiden Hilfsprogramme müssen Sie ebenfalls auf dem Host installieren, was wir Ihnen jetzt zeigen werden:
- Linux
Zusätzlich zum Agentenplugin
mk-oraclebenötigen Sie noch die Dateienoracle_unified_syncundoracle_unified_async. Sie finden alle drei Dateien in
Checkmk Community über Setup > Agents > Other operating systems > Oracle.
In den kommerziellen Editionen gelangen Sie im Setup-Menü über Agents > Windows, Linux, Solaris, AIX zunächst in die Agentenbäckerei, wo Sie die gebackenen Pakete finden.
Von dort aus kommen Sie mit dem Menüeintrag Related > Other operating systems zur Liste der Agentendateien.Wenn Sie Dateisystemzugriff haben, finden Sie alle benötigten Dateien im Verzeichnis
~/lib/python3/cmk/plugins/oracle/agents/Ihrer Checkmk-Instanz.Übertragen Sie die drei Dateien auf beliebigem Weg auf den Oracle-Host. Wenn auf dem Host
wgetzur Verfügung steht, könnten Sie so vorgehen:
Aufmerksamen LeserInnen könnte hier auffallen, dass die Zieldateien andere Namen haben als die Quelldateien. Diese Umbenennung ist unbedingt notwendig und wird im weiteren Verlauf dieses Artikels vorausgesetzt. Auch wenn Sie die Dateien auf anderem Wege von Ihrem Checkmk-Server übertragen haben, müssen Sie die Dateien umbenennen. In zukünftigen Versionen werden die Dateien, die wir mit Checkmk ausliefern direkt
mk-oracle-v2,mk-oracle-v2_syncundmk-oracle-v2_asyncheißen.Hier werden die drei Dateien in das Verzeichnis
/tmpauf dem Oracle-Host heruntergeladen. Von diesem Speicherort gehen die weiteren Schritte jetzt auch aus.Installieren Sie das Plugin auf dem Oracle-Host in das Plugin-Verzeichnis des Agenten (im Standardfall
/usr/lib/check_mk_agent/plugins). Wie das Plugin-Verzeichnis auf Ihrem Host lautet, können Sie in der Ausgabe des Checkmk-Agenten ablesen. Im folgenden Befehl wird das Plugin-Verzeichnis in die Variablepluginsdirgeschrieben. Die weiteren Befehle nutzen dann auch$pluginsdir. Sollte der nächste Befehl bei Ihnen keinen sinnvollen Output liefern, weil beispielsweiseawknicht zur Verfügung steht, dann schreiben Sie das tatsächliche Plugin-Verzeichnis einfach selber inpluginsdirrein, damit Sie danach wieder mit den angegebenen Befehlen arbeiten können.Jetzt liegen die notwendigen Dateien auf dem Oracle-Host und in der Variable
$pluginsdirsteht, wo sich das Plugin-Verzeichnis befindet. Damit schließen Sie die Installation vonmk-oracle-v2auf dem Host ab:Im obigen Beispiel wurde die Datei
mk-oracle-v2_asyncin das Unterverzeichnis600installiert. Das bedeutet, dassmk-oracle-v2_asyncalle 600 Sekunden ausgeführt wird. Achten Sie unbedingt darauf, die Optioncache_agein der Konfigurationsdatei auf exakt denselben Wert einzustellen. Konkret: Wenn Siemk-oracle-v2_asyncin das Verzeichnis$pluginsdir/600installieren, muss in der Konfigurationsdatei Folgendes stehen:Wenn Sie ein anderes Intervall wünschen, dann passen Sie beide Zahlen auf denselben Wert an.
- Windows
Zusätzlich zum Agentenplugin
mk-oracle.exebenötigen Sie noch die Dateienoracle_unified_sync.ps1undoracle_unified_async.ps1. Sie finden alle drei Dateien in
Checkmk Community über Setup > Agents > Other operating systems > Oracle.
In den kommerziellen Editionen gelangen Sie im Setup-Menü über Agents > Windows, Linux, Solaris, AIX zunächst in die Agentenbäckerei, wo Sie die gebackenen Pakete finden.
Von dort aus kommen Sie mit dem Menüeintrag Related > Other operating systems zur Liste der Agentendateien.Alternativ finden Sie die benötigten Dateien auch auf dem Checkmk-Server unter
~/lib/python3/cmk/plugins/oracle/agents/.Die eigentliche Installation des Agentenplugins läuft etwas anders ab, als Sie es womöglich von anderen Plugins kennen.
Kopieren Sie zunächst die drei Dateien vom Checkmk-Server auf beliebige Weise auf den Host und in die in der folgenden Tabelle angegebenen Zielpfade. Dabei müssen Sie die Dateien auch unbedingt wie angegeben umbenennen:
Dateiname auf dem Checkmk-Server Zielpfad Zielname mk-oracle.exe%ProgramData%\checkmk\agent\plugins\libexec\mk-oracle-v2\mk-oracle-v2.exeoracle_unified_sync.ps1%ProgramData%\checkmk\agent\plugins\mk-oracle-v2_sync.ps1oracle_unified_async.ps1%ProgramData%\checkmk\agent\plugins\mk-oracle-v2_async.ps1
Diese Umbenennung ist unbedingt notwendig und wird im weiteren Verlauf dieses Artikels vorausgesetzt. In zukünftigen Versionen werden die Dateien, die wir mit Checkmk ausliefern direkt
mk-oracle-v2.exe,mk-oracle-v2_sync.ps1undmk-oracle-v2_async.ps1heißen.Sobald die Dateien an Ort und Stelle sind, müssen Sie der Datei, die für die Ausführung der asynchronen Sektionen zuständig ist – also
mk-oracle-v2_async.ps1–, noch eine entsprechende Konfiguration mitgeben.Diese könnte so aussehen:
Wenn Sie die Konfiguration für das Agentenplugin erstellen, müssen Sie darauf achten, dass
cache_agedort denselben Wert hat. Ohne Angabe gilt 600.Diese und weitere Optionen erklären wir im Kapitel Ausführung eines speziellen Plugins anpassen im Handbuchartikel zum Monitoring von Windows.
Die Installation des gesamten Agentenplugins ist hiermit abgeschlossen. Damit das Agentenplugin jetzt auch versteht, was es tun soll, müssen Sie noch eine Konfiguration für das Plugin erstellen.
Konfiguration für das Agentenplugin erstellen
Im Konfigurationsverzeichnis des Checkmk-Agenten müssen Sie jetzt eine Datei mit dem Namen mk-oracle.yml anlegen.
- Linux
Wie das Konfigurationsverzeichnis auf Ihrem Host lautet finden Sie leicht mit dem folgenden Befehl heraus:
Legen Sie in diesem Verzeichnis mit Ihrem bevorzugten Editor die Datei
mk-oracle.ymlan.- Windows
Legen Sie im Verzeichnis
%PROGRAMDATA%\checkmk\agent\configmit Ihrem bevorzugten Editor die Dateimk-oracle.ymlan.
Um nicht bei Null starten zu müssen, gibt es im Kapitel Beispielkonfigurationen etwas, womit Sie erstmal starten können.
Eine ganz einfache Konfiguration für eine frisch installierte Oracle AI Database Free, die Sie womöglich zu Testzwecken aufgesetzt haben, könnte etwa so aussehen:
Mit diesem Beispiel könnten Sie also erstmal starten. Im Referenzteil dieses Artikel erklären wir alle weiteren Konfigurationsoptionen aus denen Sie sich bedienen können.
Sobald das Agentenplugin dann auch über eine Konfiguration verfügt, können Sie bereits auf dem Checkmk-Server eine Service-Erkennung auf dem jeweiligen Host durchführen. Damit ist die grundlegende Einrichtung des Monitoring abgeschlossen. Wenn Ihnen Sie Services, die das Agentenplugin von selbst mitbringt nicht genügen, können Sie gleich mit den Benutzerdefinierte SQL-Abfragen weitermachen.
4. Benutzerdefinierte SQL-Abfragen (Custom SQLs) einrichten
Benutzerdefinierte SQL-Abfragen (Custom SQLs) können nicht über die Regel Oracle databases (Experimental) definiert werden. Sie müssen die notwendige Konfiguration direkt auf dem Host vornehmen, von dem aus Sie Ihre Oracle-Instanzen und -Datenbanken überwachen.
4.1. Warum benutzerdefinierte SQL-Abfragen?
Checkmk bietet mit dem Agentenplugin bereits eine große Menge an SQL-Abfragen, mit denen Sie Ihre Datenbank-Instanzen überwachen können. Damit diese für eine möglichst große Menge an technischen und inhaltlichen Anforderungen passend sind, sind diese allgemein gehalten.
Um die individuellen Anforderungen eines jeden Unternehmens an das Monitoring einer konkreten Datenbank erfüllen zu können, bietet Checkmk die Möglichkeit, eigene, benutzerdefinierte SQL-Abfragen (Custom SQLs) zu erstellen und mit dem Agentenplugin abfragen zu lassen. Diese werden dann in Checkmk automatisch als Services erkannt und überwacht.
Um dem Agentenplugin Ihre Abfragen zu übergeben, haben Sie zwei Möglichkeiten:
Entweder schreiben Sie die Abfragen direkt in die Konfigurationsdatei
mk-oracle.yml.Oder Sie geben in der Konfigurationsdatei stattdessen an, wo das Agentenplugin Dateien finden kann, in denen Ihre benutzerdefinierte SQL-Abfragen gespeichert sind.
Letzteres erleichtert die Wartbarkeit und auch eine Versionskontrolle wird erleichtert, wenn Inhalte in der Konfigurationsdatei des Plugins nicht vermischt werden. Wenn es allerdings ohnehin nur um eine kleine Anzahl an Abfragen geht, können Sie sich den zusätzlichen Aufwand gegebenenfalls auch sparen.
Wir zeigen zunächst ein einfaches Beispiel, welches direkt in die Konfigurationsdatei des Plugins geschrieben wird.
4.2. Einfache benutzerdefinierte SQL-Abfragen einrichten
Den Anfang macht eine Abfrage, welche bereits echte Daten aus einer Oracle-Instanz zurückliefert. Das Beispiel soll nur verdeutlichen, wie einfach es sein kann, benutzerdefinierte SQL-Abfragen einzubinden. Wie sinnvoll exakt diese Abfrage im Arbeitsalltag ist, sei dahingestellt.
Tasten Sie sich an die später produktiv verwendbare Abfrage heran, indem Sie Ihre Ideen für SQL-Abfragen zunächst als sysdba ausführen.
Damit möglicherweise lange laufende Abfragen kein Produktivsystem ausbremsen, empfehlen wir die Verwendung einer Test-Instanz.
Den Kopf dieser Ausgabe können Sie — genauso wie es das Agentenplugin tut — ignorieren.
Wichtig ist das in der Abfrage verwendete Schlüsselwort details.
Die Zeile, die so beginnt, wird sich das Check-Plugin auf dem Checkmk-Server schnappen und daraus die Summary des Services erzeugen.
Aber woher weiß Checkmk denn, wie der Service eigentlich heißen soll?
Den Namen des Service legen Sie fest, wenn wir die SQL-Abfrage in die Konfiguration für das Agentenplugin übertragen:
Unser Beispiel zeigt drei Dinge:
Um benutzerdefinierte SQL-Abfragen einzufügen, benötigen Sie immer einen Schlüssel namens
custom_metrics.Darauf folgt eine Liste (hier:
My service). Eine solche Liste beginnt in YAML mit einem-. Der Name dieser Liste wird in Checkmk Teil des Service-Namens und kann frei gewählt werden.Dann kommt die Zeile, die die Abfrage enthält. Sie muss mit
sql:beginnen und die Abfrage selbst muss in doppelten Anführungsstrichen stehen.
Nachdem Sie diese Zeile auf Ihrem Oracle-Host in die Konfigurationsdatei des Agentenplugins eingefügt haben, können Sie schon wieder zurück zu Ihrem Checkmk-Server gehen. Führen Sie dort für den Oracle-Host eine Service-Erkennung durch. Sie erhalten dann diesen neuen Service:

Der Service-Name setzt sich dabei aus mehreren Komponenten zusammen:
Der Name beginnt immer mit ORA.
Es folgt die SID (hier: FREE).
Das anschließende SQL ist der Hinweis darauf, dass dieser Service durch eine benutzerdefinierte SQL-Abfrage entstanden ist.
Darauf folgt der String, den Sie in der Konfigurationsdatei frei wählen konnten in Großbuchstaben.
In der Summary sehen Sie dann bereits Daten, die aus dem Ergebnis der SQL-Abfrage stammen.
Es wird sicherlich Fälle geben, in denen eine solche einfache Abfrage bereits das ist, was Sie brauchen. In diesem Fall ist der Service aber wahrscheinlich noch wenig hilfreich. Deshalb zeigen wir Ihnen im Kapitel Erweiterte benutzerdefinierte SQL-Abfragen, wie Sie mit wenigen Handgriffen einen umfangreicheren Service erstellen können.
4.3. Erweiterte benutzerdefinierte SQL-Abfragen einrichten
Ausgehend von dem Beispiel im Kapitel Einfache benutzerdefinierte SQL-Abfragen, zeigen wir Ihnen jetzt, wie Sie mit wenigen Handgriffen einen Service mit einer Metrik erhalten.
Hierfür bietet es sich an, die SQL-Abfrage aus der Konfigurationsdatei den Agentenplugins auszulagern.
Stattdessen geben Sie hinter dem Schlüssel custom_metrics eine Datei an, in der das Agentenplugin Ihre SQL-Abfragen finden kann.
Wenn Sie die Datei ohne Angabe eines absoluten Pfades eintragen, durchsucht das Agentenplugin in einer bestimmten Reihenfolge einige Verzeichnisse. Welche das sind und was dabei genau passiert, erklären wir im Referenzteil dieses Artikels.
Legen Sie jetzt im Konfigurationsverzeichnis des Checkmk-Agenten ein Unterverzeichnis namens orasql an und erstellen Sie darin eine Datei mit der Endung .sql, wie Sie sie hinter path: angegeben haben.
In diesem Beispiel gehen wir davon aus, dass das Konfigurationsverzeichnis auf einem Linux-Host /etc/check_mk/ heißt.
Erzeugen Sie zunächst das unbedingt notwendige Unterverzeichnis orasql.
Erstellen Sie darin im Anschluss die Datei myadvancedservice.sql.
Darin können Sie jetzt deutlich bequemer auch mehrzeilige SQL-Abfragen unterbringen.
Wichtig bleibt dabei, dass die Schlüsselwörter für das Check-Plugin vorkommen.
Zusätzlich zu der ersten Zeile, die Sie schon aus dem einfachen Beispiel kennen, gibt das SQL-Skript nun eine Zeile aus, die mit perfdata beginnt.
Daraus wird Checkmk eine Metrik erzeugen und automatisch einen Graphen anlegen.
Mit dem Schlüsselwort exit können Sie außerdem Zustand des Service beeinflussen.
In diesem Beispiel wird er fix auf 0 gesetzt, was für den Zustand OK steht.
Die Schlüsselwörter benötigt das Check-Plugin auf dem Checkmk-Server, um aus den angelieferten Daten Services und Metriken erzeugen zu können.
Die vier Schlüsselwörter details, perfdata, long und exit erklären wir im Kapitel Formatierung der Ausgabe und Schlüsselwörter genau.
Wenn Sie das alles so angelegt haben und erneut eine Service-Erkennung durchführen, wird der alte Service verschwinden und stattdessen ein neuer, dessen Name auf MY ADVANCED SERVICE endet, gefunden werden.

5. Migration von mk_oracle zu mk-oracle-v2
5.1. Migration der Konfiguration des Agentenplugins
In Checkmk 2.5.0 hat das neue Agentenplugin mk-oracle-v2 eine Fähigkeit, die Benutzern von mk_oracle dabei hilft auf das neue Agentenplugin umzusteigen.
Übertragen Sie dazu mk-oracle-v2 auf Ihren Oracle-Host und führen Sie das Agentenplugin mit der Option -M, gefolgt vom Namen einer Konfigurationsdatei im alten Format, aus.
Das Agentenplugin liest dann die Konfiguration für das alte mk_oracle ein und gibt sie in dem Format aus, die das mk-oracle-v2 erwartet.
Das kann dann beispielsweise so aussehen:
Standardmäßig schreibt mk-oracle-v2 die migrierte Konfiguration auf die Standardausgabe.
Wir empfehlen das auch unbedingt im ersten Schritt, damit Sie die Ausgabe erst einmal prüfen können.
Der Output enthält zuerst Ihre alte Konfiguration als Kommentar.
Zu Referenzzwecken bietet es sich an, diesen Kommentar eine Weile vorzuhalten.
Wenn alles passt, können Sie mk-oracle-v2 mit der Option --migrate-output dazu anweisen, den Output direkt in eine Datei zu schreiben.
Sollte der Migrationsbefehl Teile Ihrer alten Konfiguration nicht migrieren können, so wird dies als #WARNING klar in der Ausgabe angezeigt.
Der folgenden Tabelle können Sie entnehmen, welche Variablen der Konfiguration von mk_oracle auf welche Weise übersetzt werden:
| Alte Variable… | …wird migriert zu: |
|---|---|
|
Top-level |
|
Ein Eintrag |
|
|
|
Ein Eintrag |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Die Einträge in der folgenden Tabelle werden nicht automatisch migriert und müssen von Ihnen händisch an das neue Plugin angepasst werden:
| alte Variable | Hinweis zur manuellen Migration |
|---|---|
|
Anmeldedaten pro benutzerdefiniertem SQL; verwenden Sie stattdessen instanzspezifische Überschreibungen unterhalb des Schlüssels |
|
Die Übergabe von SQL*Plus-Parametern wird nicht unterstützt. |
|
Ausschluss einzelner Sektionen pro SID; nur |
|
Die OIC-Laufzeitumgebung — gegebenenfalls |
|
Wählt |
5.2. Migration von benutzerdefinierten SQL-Abfragen
Das alte Agentenplugin mk_oracle leitet benutzerdefinierte SQL-Abfragen über das Kommandozeilen-Tool sqlplus weiter.
Das Plugin mk-oracle-v2 hingegen führt SQL-Abfragen hingegen direkt über den Treiber des Oracle Instant Clients aus.
Aus diesem Wechsel des Ausführungsmodells ergeben sich zwei wesentliche Konsequenzen für bestehende SQL-Abfragen.
Grundlegende Einschränkungen und Ausführungsmodell
Keine SQL*Plus-Befehle
Befehle wie
PROMPT,SET,COLUMN,SPOOL,EXEC/EXECUTEoderVAR/VARIABLEsind Funktionen des Client-Werkzeugssqlplusund kein Bestandteil der Datenbank-Sprache SQL. Sie funktionieren unter dem OIC-Treiber nicht.Keine anonymen PL/SQL-Blöcke: Anonyme Blöcke im Format
DECLARE/BEGIN {…} END;können nicht direkt als Skript ausgeführt werden. Es werden ausschließlich reine SQL-Statements unterstützt.
Das Agentenplugin im Migrationsmodus überprüft jede referenzierte SQL-Datei und gibt bei Abweichungen eine Warnung im Terminal sowie in der generierten Konfigurationsdatei aus. Die betroffenen Sektionen werden zwar migriert, müssen jedoch von Ihnen manuell angepasst werden, da die Abfragen sonst zur Laufzeit fehlschlagen werden.
Eigenschaften des neuen Ausführungsmodells
Mehrere Statements: Eine SQL-Datei kann mehrere, durch Semikolon getrennte SQL-Statements auf oberster Ebene enthalten. Diese werden der Reihe nach ausgeführt und ihre Ergebnisse verkettet.
Jedes zurückgegebene Ergebnis muss den Vorgaben zur Formatierung der Ausgabe und Schlüsselwörter entsprechen.
Entfernen von SQL*Plus-Befehlen
Formatierungsbefehle und interaktive Befehle aus sqlplus besitzen kein Äquivalent im Treiber des Oracle Instant Clients.
Sie müssen diese daher ersatzlos löschen.
Das Agentenplugin gibt jede zurückgegebene Datenzeile direkt aus.
Als Nächstes zeigen wir zuerst eine SQL-Datei, wie sie für für mk_oracle noch funktioniert hat:
Eine solche Datei müssen Sie für mk-oracle-v2 folgendermaßen umschreiben, damit sie mit OIC funktioniert:
Umwandlung von PL/SQL-Blöcken in reine SELECT-Abfragen
Anonyme PL/SQL-Blöcke lassen sich in den meisten Fällen durch Standard-SQL-Konstrukte ersetzen:
* PL/SQL-Variablen werden zu WITH-Klauseln (Common Table Expressions).
* IF/ELSIF-Bedingungen werden durch CASE-Anweisungen ersetzt.
* DBMS_OUTPUT.PUT_LINE-Ausgaben werden über UNION ALL oder separate, durch Semikolons getrennte Statements abgebildet.
Im folgenden Beispiel zeigen wir eine SQL-Datei, welche einen PL/SQL-Block enthält:
Eine solche Datei müssen Sie für mk-oracle-v2 in reines SQL umschreiben.
Das könnte beispielsweise so aussehen:
Auslagern komplexer PL/SQL-Logik in Stored Functions
Erfordert die Logik zwingend PL/SQL (z. B. bei Schleifen, komplexer Fehlerbehandlung oder temporären Zuständen), muss die Logik in die Datenbank selbst als Pipelined Function ausgelagert werden.
Dafür müssen Sie die Pipelined Function einmalig in Ihrer Datenbank einrichten:
Sobald Sie diese Pipelined Function eingerichtet ist, können Sie durch das Agentenplugin aufrufen lassen:
Liegt die Funktion in einem anderen Schema, muss der Schema-Name vorangestellt werden: TABLE(owner.checkmk_invalid_objects).
6. Dashboards und Tabellenansichten
6.1. Oracle-Dashboards
Die kommerziellen Editionen von Checkmk werden
mit einem eingebauten Dashboards für Oracle ausgeliefert.
Die Zahl der Dashboard für Oracle wird in den kommenden Wochen noch steigen.
Behalten Sie dazu gerne unsere Werks zum Thema Oracle im Blick.
Der Einstieg geschieht dabei immer über das Dashboard Oracle databases, welches Sie über Monitor > Applications > Oracle databases erreichen.
7. Diagnosemöglichkeiten
Das Agentenplugin mk-oracle-v2 bzw. mk-oracle-v2.exe bietet Ihnen verschiedene Möglichkeiten zur Fehlerdiagnose.
Unter Linux, Solaris, AIX und Windows rufen Sie dafür das jeweilige Binary mit denselben Optionen auf.
In den folgenden Abschnitten erfahren Sie, wie Sie das Agentenplugin manuell ausführen, wie Sie prüfen, welchen Oracle Instant Client und welche Oracle-Instanzen es findet, und wie Sie das Logging nutzen.
7.1. Agentenplugin manuell aufrufen
Im Normalbetrieb ruft der Checkmk-Agent nicht das Binary selbst auf, sondern die beiden Hilfsprogramme für den synchronen und den asynchronen Modus.
Für die Diagnose rufen Sie das Binary direkt auf.
Dabei benötigt das Agentenplugin dieselben Umgebungsvariablen, die ihm sonst der Checkmk-Agent mitgibt:
MK_CONFDIR für das Konfigurationsverzeichnis, MK_LIBDIR für das Verzeichnis, in dem unter anderem der mit dem Agentenplugin bereitgestellte Oracle Instant Client liegt, und MK_LOGDIR für die Log-Datei.
- Linux, Solaris, AIX
Führen Sie die folgenden Befehle als
rootaus. Im Beispiel verwenden wir die Standardpfade des Checkmk-Agenten unter Linux:- Windows
Führen Sie die folgenden Befehle in einer PowerShell mit Administratorrechten aus:
Mit der Option --no-spool gibt das Agentenplugin alle Sektionen aus — die synchronen wie die asynchronen — und verzichtet dabei auf die Markierung für zwischengespeicherte Daten.
Sie erhalten also die vollständige, aktuelle Ausgabe.
Kann das Agentenplugin keine Verbindung zu einer Oracle-Instanz herstellen, finden Sie dazu in der Sektion <<<oracle_instance:sep(124)>>> eine Zeile der Form <SID>|FAILURE|<Fehlermeldung>.
Schlägt dagegen nur eine einzelne Abfrage fehl, steht eine solche Zeile anstelle des Ergebnisses in der betroffenen Sektion.
Die Fehlermeldung enthält jeweils den Oracle-Fehlercode (ORA-xxxxx), mit dessen Hilfe Sie einfache Konfigurationsprobleme, wie falsche Zugangsdaten oder eine unbekannte Instanz, schnell identifizieren können.
7.2. Oracle Instant Client und Instanzen prüfen
Wenn das Agentenplugin gar keine Daten liefert, liegt das häufig daran, dass es keinen nutzbaren Oracle Instant Client findet.
Mit der Option --find-runtime zeigt Ihnen das Agentenplugin, welche Client-Bibliothek und welches ORACLE_HOME es verwenden würde, ohne eine Verbindung zu einer Oracle-Instanz aufzubauen:
Die Ausgabe besteht aus Zeilen der Form VARIABLE=Wert: LD_LIBRARY_PATH (unter Windows PATH) mit dem Verzeichnis der Client-Bibliothek, gegebenenfalls ORACLE_HOME und gegebenenfalls RUN_AS.
Die Zeile RUN_AS erscheint, wenn das Agentenplugin unter Linux, Solaris oder AIX als root läuft und die Client-Bibliothek einem anderen Benutzer gehört — zum Beispiel oracle bei einer regulären Oracle-Installation.
Das Agentenplugin wechselt dann vor der ersten Verbindung zu diesem Benutzer.
Dieser Benutzer muss daher alle Dateien lesen können, auf die der Oracle-Client danach zugreift: sqlnet.ora, tnsnames.ora, das Oracle Wallet sowie Ihre Dateien mit benutzerdefinierten SQL-Abfragen.
Bevor das Agentenplugin die Client-Bibliothek lädt, prüft es außerdem deren Zugriffsrechte.
Darf ein Unbefugter die Bibliothek oder eines der übergeordneten Verzeichnisse verändern, verweigert das Agentenplugin die Verwendung und nennt den Grund in seiner Ausgabe und in der Log-Datei.
Korrigieren Sie in diesem Fall die Zugriffsrechte.
Über die Optionen permissions_safe_entries und permissions_check in der Konfigurationsdatei können Sie diese Prüfung anpassen beziehungsweise als letzten Ausweg abschalten.
Welche Oracle-Instanzen das Agentenplugin auf dem lokalen Host findet, zeigt Ihnen die Option --detect-sids:
Das Agentenplugin listet dann die Instanzen aus der Datei oratab (unter Windows aus der Registry) mit SID, Status, ORACLE_HOME und ORACLE_BASE auf.
Unter Linux, Solaris und AIX zeigt der Status zusätzlich, ob für die Instanz ein PMON-Prozess läuft.
Unter Windows wird der Status nicht ermittelt.
7.3. Logging
Das Agentenplugin schreibt bei jeder Ausführung in die Log-Datei mk-oracle.log im Log-Verzeichnis des Agenten (MK_LOGDIR), unter Linux standardmäßig /var/log/check_mk_agent, unter Windows C:\ProgramData\checkmk\agent\log.
Die Log-Datei wird rotiert, sobald sie 500.000 Byte erreicht. Dabei werden standardmäßig 5 Log-Dateien aufbewahrt.
Standardmäßig protokolliert das Agentenplugin auf der Stufe info.
Stufe, Dateigröße und Anzahl der Log-Dateien legen Sie im Abschnitt system der Konfigurationsdatei fest:
Wenn Sie die Konfiguration über die Agentenbäckerei verteilen, wird mk-oracle.yml beim nächsten Update des Agenten überschrieben.
Tragen Sie den Abschnitt system in diesem Fall in die Datei mk-oracle.user.yml im Verzeichnis des Agentenplugins ein (unter Linux /usr/lib/check_mk_agent/plugins/libexec/mk-oracle-v2/).
Das Agentenplugin führt beide Dateien beim Start zusammen, wobei Ihre Angaben in mk-oracle.user.yml Vorrang haben.
7.4. Debugging
Für eine einzelne manuelle Ausführung können Sie die Stufe des Loggings auch beim Aufruf bestimmen und die Log-Meldungen direkt im Terminal ausgeben lassen:
Die Option -l gibt die Log-Meldungen auf der Standardfehlerausgabe statt in der Log-Datei aus.
Mit -v setzen Sie die Stufe auf debug, mit -vv auf trace.
Auf der Stufe debug nennt das Log zum Beispiel jede verwendete SQL-Datei und jede ausgeführte SQL-Abfrage und misst die Dauer von Verbindungen, Sektionen und Abfragen.
Die Stufe trace liefert die umfangreichste Ausgabe und sollte daher nur als letztes Mittel eingesetzt werden.
8. Referenzen
8.1. Benutzerdefinierte SQL-Abfragen (Custom SQLs)
Über den Konfigurationsschlüssel custom_metrics definieren Sie Ad-hoc-SQL-Abfragen, deren Ausgaben auf dem Checkmk-Server durch das Check-Plugin oracle_sql ausgewertet werden.
Jeder Eintrag wird durch einen Item-Namen identifiziert, der in Checkmk als Teil des Service-Namens angezeigt wird.
Grundlagen und Konfiguration
Die SQL-Abfragen können Sie entweder direkt als String übergeben oder aus einer Datei laden lassen.
In der folgenden Beispielkonfiguration finden Sie eine SQL-Abfrage im globalen Abschnitt, die durch den Schlüssel oracle.main bezeichnet wird.
Unterhalb des Schlüssels oracle.main.instances können Sie wiederum einen Schlüssel custom_metrics angeben, der dann natürlich nur für diese Instanzen ausgeführt wird.
Eine Instanz führt immer global definierten und ihre eigenen instanzspezifischen SQL-Abfragen aus.
Teilen sich ein globaler und ein instanzspezifischer Eintrag denselben Item-Namen, hat der Eintrag der Instanz immer Vorrang.
Externe SQL-Dateien (path:)
Anstatt SQL-Abfragen via sql: direkt in die Konfigurationsdatei des Agentenplugins zu schreiben, können Sie mit path: auf externe .sql-Dateien verweisen.
Dies funktioniert sowohl für custom_metrics als auch für vordefinierte Sektionen.
Varianten der Pfadangabe
Auflösungsregeln (Resolution rules)
- Absolut vs. Relativ
Absolute Pfade werden 1:1 übernommen. Relative Pfade werden zuerst unter
MK_LIBDIR/plugins/libexec/mk-oracle-v2/orasql/und anschließend unterMK_CONFDIR/orasql/gesucht. Existiert die Datei in beiden Verzeichnissen, gewinnt die Datei imMK_LIBDIR.- Datei vs. Verzeichnis
Ein Pfad kann auf eine spezifische Datei (mit oder ohne
.sql-Endung) oder auf ein Verzeichnis verweisen. Verweist er auf ein Verzeichnis, wird der Dateiname beicustom_metricsaus dem Item-Namen und bei vordefinierten Sektionen aus dem Sektionsnamen abgeleitet.- Versionsabhängige Varianten
Neben der Basisdatei (
<name>.sql) können Sie Oracle-spezifische Varianten im Format<name>@<min_version>.sqlbereitstellen (z.B.sessions@12010000.sql). Das Plugin wählt automatisch die Datei mit der höchstenmin_version, die kleiner oder gleich der Version der verbundenen Oracle-Instanz ist. Als Versionsformat wird ein 8-stelliges numerisches Format genutzt (MMmmRRSSSS`für Major / Minor / Release / Patch). Beispiel: 12.1.0.2 → 12010002.- Fallback-Kette
Die Reihenfolge zur Ermittlung der SQL-Abfrage lautet:
path:> (Inline)sql:> mitgelieferter Standard-Code (nur bei vordefinierten Sektionen). Schlägtpath:fehl und es ist keinsql:definiert, generiert die Sektion keine Ausgabe.
SQL-Parameter
Sie können benannte Parameter definieren, die vor der Ausführung in den SQL-Code eingesetzt werden.
Jeder Platzhalter im Format ${<name>} wird rein textuell durch den konfigurierten Wert ersetzt.
Dies funktioniert sowohl für Inline-SQL als auch für .sql-Dateien.
${ENV_VAR_1}wird dabei aus den Umgebungsvariablen aufgelöst.Textuelle Ersetzung (keine Bind-Variablen): Alle Werte werden unverändert in das Statement eingefügt. Sie können somit auch Spalten- oder Tabellennamen übergeben.
Umgebungsvariablen: Ein Wert kann auf Umgebungsvariablen verweisen (Format
$VARoder${VAR}). Diese werden beim Einlesen der Konfiguration aufgelöst. Ist eine referenzierte Variable nicht gesetzt, wird der Parameter mit einer Warnung übersprungen. Der Platzhalter bleibt im SQL-Code stehen (was i. d. R. zu einem SQL-Fehler führt, statt eine Abfrage mit leeren Werten auszuführen).Unbenutzte Parameter: Platzhalter ohne passenden Parameterwert werden ignoriert und bleiben im Code unverändert stehen.
Formatierung der Ausgabe und Schlüsselwörter
Das Agentenplugin mk-oracle-v2 fügt selbstständig den Sektions-Header <<<<<oracle_sql:sep(58)>>> sowie den Subsektions-Header [[[<SID>|<item>]]] ein.
Das auszuführende SQL ist ausschließlich für den Body der Ausgabe verantwortlich.
Jede SQL-Abfrage muss Zeilen mit einer einzigen Zeichenfolgen-Spalte (String Column) zurückgeben.
Der Wert muss mit einem der folgenden Präfixe beginnen, damit das Checkmk-Plugin diesen korrekt interpretieren kann:
details: Hier können Sie bestimmen, was im Summary des erzeugten Service ausgegeben werden soll. Die Zeile wird mit dem Schlüsselwort und einem Doppelpunkt eingeleitet. Der Rest der Zeile ergibt die Ausgabe.perfdata: Metriken werden mit diesem Schlüsselwort übergeben. Innerhalb einer Zeile können Sie beliebig viele Metriken — getrennt durch ein Leerzeichen — erzeugen. Sie können die Ausgabe der Metriken auch über mehrere Zeilen verteilen. Beginnen Sie dabei einfach immer mit dem Schlüsselwortperfdata:.long: Wenn der Service eine lange Ausgabe für das Feld Details haben soll, können Sie diese hier angeben. Auch dieses Schlüsselwort können Sie mehrmals verwenden, um mehrere Zeilen in den Details zu erzeugen.exit: Soll die Ausgabe in einem bestimmten Zustand resultieren, können Sie diesen hier bestimmen. Es stehen Ihnen dabei die bekannten Zuordnungen0,1,2,3für die Zustände OK, WARN, CRIT, UNKNOWN zur Verfügung.
8.2. Konfigurationsoptionen
Im diesem Kapitel erklären wir alle Optionen, die zur Konfiguration des Agentenplugins existieren. Egal ob Sie das Agentenplugin über den Regelsatz Oracle databases (Experimental) konfigurieren oder ob Sie es manuell konfigurieren.
Die Erklärungen hier im Handbuch gehen mitunter über den Inhalt der Inline-Hilfe hinaus, wenn es beispielsweise interessante Hintergrundinformationen zu einer Option gibt und eine längere Erklärung für bestimmte Anwendungsfälle angebracht sind.
Dazu geben wir jeweils auch an, welche Eintragung durch eine gewählte Option in der Konfigurationsdatei mk-oracle.yml entsteht.
Zusätzlich finden alle Interessierten die Beschreibung aller Optionen der mk-oracle.yml in unserer Beschreibung auf GitHub.
Additional Options > Maximum connections
Maximale Anzahl der zu öffnenden Datenbank-Verbindungen.
Additional Options > Maximum queries
Maximale Anzahl der Abfragen, die pro Verbindung ausgeführt werden dürfen.
Additional Options > Ignore database name
Additional Options > Oracle Instant Client options
Authentication > Authentication type
Hier können Sie zwischen standard und wallet wählen.
Wählen Sie wallet sind keine weiteren Einstellungen an dieser Stelle nötig.
Oracle Wallet bietet eine sichere Möglichkeit, sich bei Oracle-Datenbanken zu authentifizieren, ohne Passwörter im Klartext in Konfigurationsdateien zu speichern.
standard steht an dieser Stelle für die Authentifizierung per Benutzername und Passwort.
Die Angabe von username und password ist dann auch zwingend notwendig.
Authentication > Authentication type > User & password
Authentication > Role
Haben Sie sich für die Authentifizierung per Benutzername und Passwort entschieden, können Sie optional die Rolle des Benutzers angeben.
Connection options
In dieser Option legen Sie die Verbindungsparameter auf Netzwerkebene fest, die für alle Instanzen gelten, sofern sie nicht in den datenbankspezifischen Einstellungen überschrieben werden.
Default settings > Cache age
Mit der Option Cache age können Sie die Gültigkeitsdauer des Caches von Sektion bestimmen, welche Sie asynchron überwachen.
Default settings > Instance discovery
Über die Optionen unter Instance discovery können Sie genau steuern, welche Instanzen Sie mit Checkmk überwachen möchten und welche Sie gegebenenfalls vom Monitoring ausschließen möchten. Die Option auch nur dann eine Funktion, wenn sich das Agentenplugin auf dem selben Host, wie die Instanzen befinden.
Default settings > Sections - data to collect
Mit dieser Option können Sie zielgenau festlegen, welche Daten über Ihre Instanzen und Datenbanken überhaupt durch das Agentenplugin abgefragt werden sollen.
Zusätzlich können Sie pro Sektion festlegen, ob die Daten synchron oder asynchron abgefragt werden sollen.
Die Angaben zu is_async im folgenden Beispiel zeigen unsere Standardeinstellungen.
Databases to monitor
Wenn einzelne oder gar alle Oracle-Instanzen auf einem Host unterschiedliche Login-Daten oder Verbindungseinstellungen aufweisen, dann müssen Sie diese im Abschnitt Databases to monitor einzeln konfigurieren. Um die einzelnen Datenbanken zu identifizieren, habe Sie die Auswahl aus SID, Alias, Service Name. Konsultieren Sie an dieser Stelle die Inline-Hilfe in der Regel, um mehr über die drei Optionen zu erfahren. In unserer Beschreibung auf GitHub finden Sie außerdem einige weitere Konfigurationsbeispiele.
8.3. Beispielkonfigurationen
Die folgenden Beispielkonfigurationen können Sie als Ausgangspunkte für die manuelle Einrichtung Ihres Oracle-Monitorings verwenden.
Minimale Konfiguration
(Fast) vollständiges Beispiel
Seit der Erstellung dieses Beispiels sind noch Optionen hinzugekommen. Das Beispiel wird demnächst ergänzt.
