Checkmk
to checkmk.com
Important

This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved.

1. Introduction

Checkmk offre des options complètes pour la surveillance des bases de données Oracle. Grâce au plug-in d'agent, vous pouvez non seulement récupérer les tablespaces d'une base de données ou ses sessions actives, mais également de nombreux autres types de métriques. Vous trouverez une liste complète des options de surveillance offertes par nos plug-ins de vérification dans le Catalogue des plug-ins de vérification. Nous ajoutons régulièrement de nouveaux plug-ins et mettons à jour ceux qui existent déjà ; il est donc toujours utile de consulter le catalogue. Checkmk peut notamment surveiller les valeurs suivantes :

Pour pouvoir surveiller les bases de données, seul le plug-in de l'agent est nécessaire en plus de l'agent sur le serveur de base de données. Les systèmes d'exploitation Linux, Solaris, AIX et Windows sont actuellement pris en charge. Le plug-in de l'agent pour les systèmes d'exploitation de type Unix (Linux, Solaris, AIX) s'appelle mk_oracle et pour Windows mk_oracle.ps1. Aucun logiciel supplémentaire n'est requis pour la surveillance, que ce soit sur le serveur Checkmk ou sur le serveur de base de données.

La plupart des étapes de configuration de la surveillance sont identiques pour Linux et Windows. Les différences sont mises en évidence dans le chapitre consacré à la configuration sous Linux, Solaris, AIX et Windows. Grâce à la fonctionnalité Agent Bakery des éditions commerciales, vous avez la possibilité de configurer l'installation pour différents environnements à partir d'un seul et même endroit.

2. Configuration initiale

Les fichiers de configuration contenant des exemples présentés dans ce chapitre et les suivants sont disponibles sur le serveur Checkmk, soit via la ligne de commande, soit via l’interface Web de Checkmk. Dans Checkmk Community, sélectionnez « Setup > Agents » et, dans les éditions commerciales, « Setup > Agents > Windows, Linux, Solaris, AIX > Related ». Dans toutes les éditions, vous trouverez des entrées de menu pour les différents systèmes d’exploitation. Les fichiers de configuration se trouvent dans la section « Example Configurations ».

2.1. Création d'un utilisateur de base de données

En principe, la première configuration est rapide et ne nécessite que trois étapes. La première étape consiste bien sûr à disposer d’un utilisateur autorisé à interroger les bases de données. À condition que vous n’utilisiez pas Real Application Cluster (RAC), créez un utilisateur dans chaque base de données à surveiller. La manière d'accéder à une instance varie en fonction du système d'exploitation installé. Sous Linux, vous pouvez par exemple procéder en définissant toujours au préalable l'instance concernée comme variable d'environnement dans laquelle un utilisateur doit être créé. Normalement, vous passez d'abord à l'utilisateur « oracle », mais cela peut varier en fonction de la configuration :

root@linux# su - oracle
oracle@linux$ export ORACLE_SID=MYINST1
Copier la ou les commandes dans le presse-papiers
Commande(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Connectez-vous ensuite à l'instance et créez un utilisateur pour la surveillance. Pour obtenir toutes les données, les autorisations suivantes sont requises. Dans l'exemple suivant, l'utilisateur nouvellement créé s'appelle checkmk. Vous pouvez également spécifier tout autre nom de votre choix :

sqlplus> create user checkmk identified by myPassword;
sqlplus> grant select_catalog_role to checkmk;
sqlplus> grant create session to checkmk;
sqlplus> connect checkmk/myPassword
sqlplus> exit
Copier la ou les commandes dans le presse-papiers
Commande(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Vous trouverez des informations détaillées sur le fonctionnement de la connexion à une instance spécifique dans la documentation Oracle.

Bases de données multi-locataires

Vous pouvez également configurer la connexion pour les bases de données multi-locataires. Cette opération s'effectue généralement dans la configuration à l'aide d'un utilisateur spécial et avec le préfixe C##. L'attribution des autorisations diffère légèrement de celle des utilisateurs standard, car vous devez les spécifier pour tous les conteneurs actuels et pour tous les conteneurs futurs :

sqlplus> create user c##checkmk identified by myPassword;
sqlplus> alter user c##checkmk set container_data=all container=current;
sqlplus> grant select_catalog_role to c##checkmk container=all;
sqlplus> grant create session to c##checkmk container=all;
sqlplus> exit
Copier la ou les commandes dans le presse-papiers
Commande(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

2.2. Création de la configuration

Une fois que vous avez créé un utilisateur, l'étape suivante consiste à activer le plug-in de l'agent afin de recevoir ultérieurement ces informations. La méthode la plus simple consiste à définir les mêmes données de connexion pour toutes les instances et à définir une valeur par défaut dans la configuration.

Linux, Solaris, AIX
Windows
Linux, Solaris, AIX

Créez le fichier de configuration mk_oracle.cfg sur l'hôte Oracle :

/etc/check_mk/mk_oracle.cfg
# Syntax:
# DBUSER='USERNAME:PASSWORD'
DBUSER='checkmk:myPassword'
Windows

L'utilisateur standard est tout ce dont le plug-in de l'agent a réellement besoin. Toutes les autres options que vous pouvez définir sur les systèmes de type Unix ou sous Windows sont facultatives.

2.3. Utilisation du portefeuille Oracle

Au lieu de spécifier directement l’utilisateur et son mot de passe dans un fichier de configuration, vous pouvez également utiliser Oracle Wallet. Cela présente l'avantage de ne plus avoir à stocker les données d'accès sous forme non chiffrée sur le serveur Checkmk et sur l'hôte Oracle. Ainsi, même si vous avez défini les droits d'accès du fichier de configuration sur l'hôte Oracle en conséquence, les données d'accès ont néanmoins quitté le serveur et se trouvent sur le serveur Checkmk tant que vous utilisez l'Agent Bakery.

Le portefeuille Oracle stocke quant à lui les données d'accès chiffrées sur l'hôte à surveiller, de sorte qu'elles puissent être utilisées sans qu'aucune donnée de connexion ne doive être divulguée explicitement. Checkmk peut ainsi utiliser ce portefeuille, de sorte que seules les données d'accès de l'administrateur de base de données (DBA) doivent être connues. Créez — ou demandez au DBA de créer — un portefeuille sur le serveur approprié :

root@linux# mkstore -wrl /etc/check_mk/oracle_wallet -create
Copier la ou les commandes dans le presse-papiers
Commande(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Le plug-in de l'agent accédera à ce fichier ultérieurement chaque fois qu'une connexion à une instance devra être établie. Afin que les données utilisateur nécessaires puissent également être trouvées, vous devez les saisir une fois dans le portefeuille. Dans l'exemple suivant, vous ajoutez ainsi l'utilisateur checkmk pour l'instance MYINST1 :

root@linux# mkstore -wrl /etc/check_mk/oracle_wallet -createCredential MYINST1 checkmk myPassword
Copier la ou les commandes dans le presse-papiers
Commande(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Pour que le plug-in d’agent sache où rechercher le portefeuille, il doit trouver deux fichiers. Le premier fichier est sqlnet.ora, dans lequel se trouvent les informations relatives à l’emplacement du portefeuille. Le deuxième fichier — tnsnames.ora — définit l’adresse de l’instance afin qu’elle puisse également être accessible via son alias. Pour que le plug-in d’agent puisse accéder à ces fichiers, vous pouvez spécifier le chemin d’accès sous Linux, Solaris et AIX à l’aide de la variable d’environnement TNS_ADMIN. Ceci est particulièrement utile si les fichiers existent déjà. Vous pouvez également les créer explicitement. Sous Windows, vous devez même les spécifier manuellement.

Commencez par créer le fichier sqlnet.ora. Le plug-in de l'agent recherche également les données de connexion dans ce fichier ; vous devez donc y indiquer le chemin d'accès correct vers le fichier wallet que vous venez de créer. Veillez à définir le paramètre SQLNET.WALLET_OVERRIDE sur TRUE :

/etc/check_mk/sqlnet.ora
LOG_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))
 )

Le plug-in sait désormais quelles informations d'identification utiliser. Afin qu'il accède également à la bonne adresse, créez un deuxième fichier nommé tnsnames.ora. Vous trouverez la syntaxe exacte dans la documentation Oracle, mais à titre d'exemple, le fichier pourrait ressembler à ceci :

/etc/check_mk/tnsnames.ora
MYINST1
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = MYINST1_ALIAS)
    )
  )

Cette étape vous a permis de créer les conditions préalables à la suppression des données d'accès du fichier de configuration du plug-in de l'agent. Au lieu des données d'accès, il vous suffit d'entrer une barre oblique (/):

/etc/check_mk/mk_oracle.cfg
DBUSER='/:'

Vous pouvez bien sûr ajouter ultérieurement d’autres données d’accès au portefeuille. Il suffira alors de modifier le fichier d’tnsnames.ora en conséquence.

Enfin, modifiez les permissions des fichiers et répertoires créés manuellement dans cette section afin que les droits d’accès à l’exécution soient correctement définis. Le plug-in agent exécuté en tant qu’root basculera vers le propriétaire des binaires Oracle (tels que $ORACLE_HOME/bin/sqlplus) avant de les exécuter. Au minimum, le groupe du propriétaire des binaires Oracle doit donc disposer d’un accès en lecture aux fichiers créés manuellement dans /etc/check_mk/. Dans l’exemple suivant, nous supposons que le groupe est oinstall.

Les commandes suivantes permettent de modifier le groupe en oinstall :

root@linux# chgrp oinstall /etc/check_mk/sqlnet.ora /etc/check_mk/tnsnames.ora
root@linux# chgrp -R oinstall /etc/check_mk/oracle_wallet
Copier la ou les commandes dans le presse-papiers
Commande(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Ces commandes garantissent ensuite que le groupe peut lire le répertoire oracle_wallet et son contenu :

root@linux# chmod g+x /etc/check_mk/oracle_wallet
root@linux# chmod -R g+r /etc/check_mk/oracle_wallet
Copier la ou les commandes dans le presse-papiers
Commande(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Les autorisations devraient alors ressembler à ceci :

root@linux# tree -ugpR /etc/check_mk
[drwxr-xr-x root     root    ]  /etc/check_mk
├── [drwxr-x--- root   oinstall ]  oracle_wallet
│   └── [-rw-r----- root   oinstall ]  cwallet.sso
│   └── [-rw-r----- root   oinstall ]  cwallet.sso.lck
│   └── [-rw-r----- root   oinstall ]  ewallet.p12
│   └── [-rw-r----- root   oinstall ]  ewallet.p12.lck
├── [-rw-r--r-- root   oinstall ]  sqlnet.ora
├── [-rw-r--r-- root   oinstall ]  tnsnames.ora
Copier la ou les commandes dans le presse-papiers
Commande(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

La sortie de la commande n'affiche que les fichiers et répertoires concernés.

3. Configuration sous Linux, Solaris, AIX et Windows

Vous pouvez configurer la surveillance sur les systèmes de type Unix ainsi que sous Windows. Cependant, certaines options ne sont pas disponibles ou ne le sont que de manière limitée sous Windows. Les sections suivantes contiennent toutes les informations dont vous avez besoin pour configurer la surveillance dans les différents environnements.

3.1. Chemins d'accès au plug-in et aux fichiers de configuration

Linux, Solaris, AIX
Windows
Linux, Solaris, AIX

Sous les systèmes de type Unix, Checkmk utilise un plug-in d'agent uniforme. D'une part, cela réduit l'effort de maintenance, car les requêtes SQL ne sont pas dupliquées, et d'autre part, vous n'avez à vous occuper que d'un seul plug-in d'agent. Sur tous les systèmes pris en charge, les chemins d'accès aux fichiers pour les agents sont identiques ou très similaires. Plus précisément, vous avez besoin des répertoires suivants :

Système d'exploitation Chemin d'accès au plug-in Chemin de configuration

Linux, Solaris, AIX

/usr/lib/check_mk_agent/plugins/

/etc/check_mk/

Linux avec l'systemd

/usr/lib/check_mk_agent/plugins/<Number>

/etc/check_mk/

AIX

/usr/check_mk/lib/plugins/

/usr/check_mk/conf/

Windows

3.2. Installation du plug-in d'agent

Une fois que vous avez créé un utilisateur lors de la configuration initiale et que vous l'avez enregistré dans le fichier de configuration, installez le plug-in de l'agent.

Linux, Solaris, AIX
Windows
Linux, Solaris, AIX

Copiez le fichier mk_oracle depuis le répertoire ~/share/check_mk/agents/plugins/ du serveur Checkmk vers le répertoire des plug-ins de l'hôte Oracle décrit ci-dessus.

Important

Le plug-in d'agent pour les systèmes de type Unix mk_oracle ne fonctionne pas correctement avec systemd (voir Werk #13732). Sur les systèmes équipés d’systemd, vous devez donc exécuter le plug-in de l’agent de manière asynchrone. Cela signifie que vous n’installez pas le plug-in de l’agent directement sous /usr/lib/check_mk_agent/plugins/, mais dans un sous-dossier /usr/lib/check_mk_agent/plugins/<Number>/. <Number>correspond à l’intervalle d’exécution en secondes. Nous recommandons une exécution toutes les minutes, c’est-à-dire /usr/lib/check_mk_agent/plugins/60/. Lors de la configuration via l’Agent Bakery, vous pouvez effectuer cette opération à l’aide de l’option «Host uses xinetd or systemd» de la règle Oracle, qui est définie par défaut sur xinetd.

Veillez à rendre le plug-in de l'agent exécutable :

root@linux# cd /usr/lib/check_mk_agent/plugins/
root@linux:/usr/lib/check_mk_agent/plugins# ls -lA
-rw-r--r-- 1 root root 120808 Jan 25 11:29 mk_oracle
root@linux:/usr/lib/check_mk_agent/plugins# chmod +x mk_oracle
root@linux:/usr/lib/check_mk_agent/plugins# ls -lA
-rwxr-xr-x 1 root root 120808 Jan 25 11:29 mk_oracle
Copier la ou les commandes dans le presse-papiers
Commande(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !
Windows

3.3. Options avancées

Lors de la configuration initiale, vous avez déjà découvert les premières variables permettant d’obtenir des données de surveillance à partir de vos instances Oracle. Cependant, selon le scénario d’application, vous aurez rapidement besoin de possibilités supplémentaires pour un contrôle individuel et optimisé de la surveillance de chaque instance. Vous trouverez ces options dans les sections suivantes. Certaines de ces options ne sont disponibles que dans les environnements de type Unix.

Configuration utilisateur avancée

Avec la connexion standard, vous pouvez utiliser des instances régulières, voire toutes les instances d'une base de données. Cependant, il existe des cas particuliers dans lesquels vous avez besoin de données d'accès individuelles pour des instances spécifiques. Dans le fichier de configuration, vous disposez donc des trois options suivantes pour spécifier les utilisateurs :

Paramètre Description

DBUSER

Valeur par défaut si aucune donnée d'accès individuelle n'a été définie pour l'instance de base de données.

DBUSER_MYINST1

Données d'accès pour une instance de base de données spécifique — dans ce cas, pour l'instance MYINST1. Les données d'accès ne sont utilisées que pour cette instance.

ASMUSER

Données d'accès spéciales pour la gestion automatique du stockage (ASM).
Important : pour un ASM, un seul identifiant de connexion peut être spécifié à la fois.

Ces variables offrent en outre davantage d’options en plus du nom d’utilisateur et du mot de passe. Vous pouvez également déterminer si l’utilisateur est un administrateur (SYSDBA) ou un utilisateur standard (SYSASM), sur quelle combinaison d’adresse et de port l’instance écoute, et même ― pour les systèmes de type Unix ― quel alias TNS (TNSALIAS) doit être utilisé. Toutefois, ces spécifications sont toujours ― contrairement au nom d’utilisateur et au mot de passe ― facultatives.

Le fichier de configuration créé au début peut donc être complété comme suit, par exemple :

Linux, Solaris, AIX
Windows
Linux, Solaris, AIX
/etc/check_mk/mk_oracle.cfg
# Syntax
# DBUSER='USERNAME:PASSWORD:ROLE:HOST:PORT:TNSALIAS'
DBUSER='checkmk:myPassword'

DBUSER_MYINST1='cmk_specific1:myPassword1:SYSDBA:localhost:1521'
DBUSER_MYINST2='cmk_specific2:myPassword2::localhost::INST2'

ASMUSER='cmk_asm:myASMPassword:SYSASM'

Quelques explications concernant l'exemple ci-dessus :

  • Vous pouvez définir autant de données d'accès individuelles que vous le souhaitez. Celles-ci sont toujours prioritaires par rapport aux paramètres par défaut.

  • Chaque option est séparée des autres par un deux-points (:).

  • Si un champ facultatif est omis au milieu de la chaîne, un deux-points doit être indiqué, comme dans l'entrée d'DBUSER_MYINST2, où aucun rôle ni aucun port n'a été spécifié.

  • Si, à partir d'un certain point, aucun autre champ facultatif n'est nécessaire, vous pouvez omettre les deux-points, comme dans l'entrée d'ASMUSER, où ni l'hôte, ni le port, ni l'alias TNS n'ont été spécifiés.

Windows

Inclusion ou exclusion d'instances

Dans certains cas, vous ne souhaitez peut-être pas inclure certaines instances dans la surveillance. Cela peut être parce qu’il s’agit uniquement d’un environnement de test pour les développeurs, ou pour d’autres raisons. Afin de simplifier au maximum la configuration dans des situations particulières, vous disposez de différentes options pour exclure entièrement ou partiellement une ou plusieurs instances :

Linux, Solaris, AIX
Windows
Linux, Solaris, AIX
Paramètre Description

ONLY_SIDS

Vous pouvez ici déterminer quelles instances doivent être surveillées. Une instance est identifiée par son identifiant système (SID). Il s'agit d'une liste positive, qui ignore toutes les instances qui ne sont pas explicitement répertoriées. Ce paramètre est très utile si le nombre d'instances à surveiller est inférieur au nombre d'instances à ignorer.

SKIP_SIDS

Contrairement à « ONLY_SIDS », il s'agit d'une liste négative où toutes les instances sont surveillées, à l'exception de celles explicitement répertoriées ici. Ce paramètre est particulièrement adapté si le nombre d'instances à ignorer est inférieur au nombre d'instances à surveiller.

EXCLUDE_<SID>

Ce paramètre vous permet d'exclure partiellement une instance en excluant certaines sections de celle-ci de la surveillance. De cette manière, vous définissez une liste négative des sections d'une instance. Vous pouvez également exclure toutes les sections en utilisant la valeurALL , ce qui revient à ajouter l'instance àSKIP_SIDS .
Important : pour les SID ASM, vous ne pouvez pas utiliser cette procédure, mais vous pouvez utiliserSKIP_SIDS="+ASM1 …​" à la place.

Vous l'avez sans doute déjà deviné : L'ordre dans lequel ces paramètres sont traités détermine le résultat. Les entrées sont en effet traitées par instance exactement dans l'ordre indiqué dans le tableau ci-dessus. Par conséquent, si la variable ONLY_SIDS est définie, SKIP_SIDS n’est plus évaluée et il n’est pas vérifié si la variable EXCLUDE_<SID> est définie sur ALL pour cette instance. Si ONLY_SIDS n’est pas définie, le système procède selon la séquence. En cas de doute — c’est-à-dire selon le comportement par défaut — l’instance sera surveillée en conséquence.

Vous trouverez ci-dessous un exemple dans lequel toutes les variables sont définies, ainsi que le comportement correspondant :

/etc/check_mk/mk_oracle.cfg
ONLY_SIDS='INST1 INST2 INST5'
SKIP_SIDS='INST7 INST3 INST2'
EXCLUDE_INST1='ALL'
EXCLUDE_INST2='tablespaces rman'

Étant donné que la liste positive de la première ligne a toujours la priorité, les deuxième et troisième lignes ne sont plus évaluées. Seule la quatrième (dernière) ligne sera prise en compte ultérieurement, car l’instance ne doit être évaluée que partiellement ici.

En pratique, il est judicieux de n’utiliser qu’une seule des variables pour déterminer le nombre d’instances à surveiller.

Windows

Détermination des données à récupérer

Comme vous l'avez appris dans la section précédente, il est non seulement possible de désactiver complètement des instances, mais aussi de ne les surveiller que partiellement. Les exigences opérationnelles sont variées, et cela s’avère particulièrement pratique lorsqu’il n’est pas souhaitable d’inclure certaines sections de longue durée dans l’ensemble, ou lorsque seules des informations de base provenant d’instances de test sont requises, par exemple. Pour restreindre les sections de manière globale, définissez directement les variables correspondantes ; pour restreindre uniquement certaines instances, vous pouvez utiliser la variable EXCLUDE_<SID>, que vous avez déjà découverte dans la section précédente. Les variables globales sont les suivantes :

Paramètre Description

SYNC_SECTIONS

Sections devant être interrogées de manière synchrone, c'est-à-dire à chaque exécution de l'agent. L'intervalle d'interrogation étant de 60 secondes par défaut, les requêtes SQL utilisées doivent s'exécuter à une vitesse correspondante. Si la variable n'est pas spécifiée, toutes les sections sont interrogées.

ASYNC_SECTIONS

Sections devant être interrogées de manière asynchrone, c'est-à-dire uniquement toutes les x minutes. La durée de validité des données est déterminée par la variable `CACHE_MAXAGE`, indiquée ci-dessous dans ce tableau.

SYNC_ASM_SECTIONS

Ici, pour les sections ASM, le même mécanisme s'applique que dans la description générale de la variable « SYNC_SECTIONS ».

ASYNC_ASM_SECTIONS

Pour les sections ASM, le même mécanisme s'applique que dans la description générale de la variable ASYNC_SECTIONS.

CACHE_MAXAGE

Cette variable sert à déterminer la durée de validité des données récupérées de manière asynchrone. Si la valeur de la variable n’est pas spécifiée, la valeur par défaut de 600 secondes (10 minutes) est utilisée. Assurez-vous que la durée ne soit pas inférieure à l’intervalle auquel l’agent Checkmk transmet les données (60 secondes par défaut). Sinon, les données pourraient être considérées comme obsolètes et ne pas être transmises par l’agent.

MAX_TASKS

Nombre de SID traités en parallèle. La valeur par défaut est 1.

Ce mécanisme vous permet donc de définir une valeur par défaut dans le fichier de configuration et de la remplacer pour des instances individuelles si nécessaire. Une configuration pourrait alors ressembler à ceci, par exemple :

Linux, Solaris, AIX
Windows
Linux, Solaris, AIX
/etc/check_mk/mk_oracle.cfg
# DEFAULTS:
# SYNC_SECTIONS="instance sessions logswitches undostat recovery_area processes recovery_status longactivesessions dataguard_stats performance locks"
# ASYNC_SECTIONS="tablespaces rman jobs ts_quotas resumable"
# SYNC_ASM_SECTIONS="instance processes"
# ASYNC_ASM_SECTIONS="asm_diskgroup"
# CACHE_MAXAGE=600

SYNC_ASM_SECTIONS='instance'
ASYNC_SECTIONS='tablespaces jobs rman resumable'

CACHE_MAXAGE=300

EXCLUDE_INST1='undostat locks'
EXCLUDE_INST2='jobs'
Windows

Comme vous pouvez le voir dans l'exemple, seule la section « instance » est interrogée pour les instances ASM, et un ensemble minimal de sections asynchrones est spécifié sur toutes les instances standard. De plus, sur l'instance « INST1 », les sections synchrones « undostat » et « locks » seront omises. Étant donné que les sections synchrones ne sont pas explicitement spécifiées, toutes les sections synchrones sont récupérées à partir de toutes les autres instances. Dans l'instance INST2, en revanche, seules trois des quatre sections asynchrones sont interrogées, car jobs a été exclue en plus. Enfin, le cache de 10 minutes est réduit à 5 minutes (300 secondes), car ce délai est suffisant pour récupérer toutes les données.

Important

Si vous définissez dans le fichier de configuration les sections que vous souhaitez récupérer, et selon quelle méthode — vous pouvez également transformer une section asynchrone en section synchrone —, vous devez spécifier toutes les sections qui doivent être exécutées dans la zone correspondante.

Par exemple, si vous ne souhaitez obtenir que locks à partir de la requête synchrone, spécifiez la liste synchrone dans son intégralité et omettez simplement locks :

Linux, Solaris, AIX
Windows
Linux, Solaris, AIX
/etc/check_mk/mk_oracle.cfg
# Just exclude 'locks' from sync sections:
SYNC_SECTIONS='instance sessions logswitches undostat recovery_area processes recovery_status longactivesessions dataguard_stats performance'
Windows

Il en va de même pour les trois autres variables dans lesquelles les sections peuvent être définies.

Configuration de TNS Alias et TNS_ADMIN (Linux, Solaris, AIX uniquement)

L'alias TNS est un nom convivial pour une connexion à une base de données. TNS signifie « Transparent Network Substrate », la technologie réseau d'Oracle. Un alias TNS permet d'établir une connexion à une instance de base de données sans avoir à saisir à chaque fois l'intégralité des détails de connexion (tels que le nom d'hôte, le numéro de port ou le nom du service). Les alias TNS sont définis dans le fichier « tnsnames.ora » dans les environnements de type Unix. La section consacrée à Oracle Wallet contient un exemple de définition d'un alias TNS.

TNS_ADMIN est une variable d'environnement qui pointe vers le répertoire dans lequel se trouvent les fichiers de configuration Oracle tels que sqlnet.ora et tnsnames.ora. Par défaut, TNS_ADMIN est défini par Oracle sur $ORACLE_HOME/network/admin. Dans le fichier de configuration, vous pouvez attribuer un chemin d'accès différent à TNS_ADMIN, comme dans l'exemple suivant pour une installation Oracle spécifique :

/etc/check_mk/mk_oracle.cfg
export TNS_ADMIN=/opt/oracle/product/19c/dbhome_1/network/admin/

Ce n'est que si la variable n'est pas définie du tout qu'elle est définie par le plug-in de l'agent sur /etc/check_mk/.

Droits d'accès à l'exécution

Linux, Solaris, AIX
Windows
Linux, Solaris, AIX

Pour des raisons de sécurité, le plug-in d’agent mk_oracle n’exécute plus les binaires Oracle sous l’utilisateur root. Cela concerne les programmes sqlplus, tnsping et, s’il est disponible, crsctl. À la place, mk_oracle, par exemple, se fait passer pour le propriétaire du fichier $ORACLE_HOME/bin/sqlplus avant d’exécuter sqlplus. Cela garantit que les programmes Oracle ne sont exécutés que par un utilisateur non privilégié et empêche ainsi un utilisateur Oracle malveillant de remplacer un binaire tel que sqlplus et de l’exécuter en tant qu’utilisateur root.

Tip

Vous pouvez découvrir dans quelle version de patch de Checkmk cette modification a été apportée dans les Werks n° 15327 et n° 15328.

L'exécution des programmes Oracle par un utilisateur non privilégié peut entraîner des problèmes lors de l'utilisation d'un portefeuille Oracle, car cet utilisateur pourrait ne pas être en mesure d'accéder aux fichiers spécifiques au portefeuille. L'utilisateur non privilégié a besoin des autorisations nécessaires pour lire les fichiers $TNS_ADMIN/sqlnet.ora et $TNS_ADMIN/tnsnames.ora, pour exécuter le dossier du portefeuille et pour lire les fichiers contenus dans ce dossier. Vous ne devriez pas rencontrer de problèmes avec les droits d'accès tant que vous avez modifié le groupe des fichiers et des répertoires comme décrit à la fin de la section consacrée au portefeuille Oracle.

Le plug-in de l'agent vous aide à effectuer le diagnostic et vérifie s'il existe des problèmes d'accès aux fichiers mentionnés, puis les affiche dans le test de connexion. La procédure exacte pour diagnostiquer et corriger les droits d'accès est disponible dans la base de connaissances Checkmk.

Windows

3.4. Surveillance de bases de données distantes (Linux, Solaris, AIX uniquement)

Sous les systèmes de type Unix, vous pouvez non seulement récupérer les instances s'exécutant localement, mais également vous connecter à des instances distantes et récupérer les bases de données qui s'y exécutent. Cela s'avère par exemple avantageux si vous n'avez pas accès au système sous-jacent, mais que vous souhaitez tout de même surveiller la base de données. Il est également possible de surveiller des bases de données distantes à partir d'un hôte sur lequel le plug-in d'agent est exécuté, mais qui ne dispose pas de base de données Oracle.

Pour surveiller des bases de données distantes, les conditions suivantes doivent être remplies sur l'hôte sur lequel le plug-in de l'agent est installé :

  • La bibliothèque d'accès AIO pour Linux est installée. Sous Red Hat Enterprise Linux et les distributions binaires compatibles, le paquet s'appelle « libaio ».

  • Oracle Instant Client est installé.

  • Le programme sqlplus existe déjà dans l'installation ou a peut-être été installé en tant que paquet d'extension du client.

En règle générale, ces conditions sont déjà remplies s’il existe une installation Oracle sur l’hôte. Sinon, installez les paquets appropriés pour y remédier.

Pour que le plug-in de l'agent puisse se connecter à la base de données distante, enregistrez d'abord les données d'accès dans le fichier de configuration. Celles-ci sont similaires aux spécifications d'DBUSER, que vous avez déjà rencontrées lors de la configuration utilisateur avancée. Il existe toutefois un certain nombre de spécifications obligatoires supplémentaires :

/etc/check_mk/mk_oracle.cfg
# Syntax:
# REMOTE_INSTANCE_[ID]='USER:PASSWORD:ROLE:HOST:PORT:PIGGYBACKHOST:SID:VERSION:TNSALIAS'

REMOTE_INSTANCE_1='check_mk:mypassword::myRemoteHost:1521:myOracleHost:MYINST3:11.2'
REMOTE_INSTANCE_myinst1='/:::myRemoteHost:1521::MYINST1:11.2:INST1'

REMOTE_ORACLE_HOME='/usr/lib/oracle/11.2/client64'

Dans l’exemple, deux instances distantes sont configurées à l’aide de deux lignes. Afin que chaque ligne de texte soit unique, un identifiant est défini à la fin de chaque variable. Vous pouvez les choisir librement — elles doivent simplement être uniques pour chaque fichier de configuration. Comme vous l’avez sans doute déjà remarqué, la spécification du port est désormais suivie d’autres valeurs. Celles-ci sont en partie facultatives et en partie nécessaires pour établir une connexion.

La première nouvelle valeur PIGGYBACKHOST est définie sur myOracleHost pour l’instance MYINST3. Cette spécification attribue les résultats de la requête, via le mécanisme de piggyback, à l’hôte spécifié. Si celui-ci est présent en tant qu’hôte dans Checkmk, les nouveaux services y apparaîtront en conséquence, plutôt que sur l’hôte où le plug-in de l’agent est en cours d’exécution ou à partir duquel les données ont été récupérées. Vous ne voyez pas cette spécification sur la deuxième instance MYINST1 — l’attribution à un autre hôte est facultative.

La deuxième nouvelle valeur SID est le nom de l'instance. Étant donné que le plug-in de l'agent ne peut pas voir quelles instances s'exécutent sur l'hôte distant, une ligne de configuration doit être spécifiée pour chaque instance distante — cette valeur est donc obligatoire et n'est donc pas facultative.

La troisième valeur VERSION est obligatoire et s’explique également par le fait que de nombreuses métadonnées ne sont disponibles que si vous êtes directement sur l’hôte. Par conséquent, la spécification de version ne peut pas non plus être omise, et celle-ci détermine quelles requêtes SQL peuvent être transmises à l’instance. Dans l’exemple, les deux instances distantes utilisent la version 11.2.

La quatrième et dernière valeur d'TNSALIAS est à nouveau facultative et peut être utilisée si vous accédez à l'instance distante via Oracle Wallet ou LDAP/Active Directory. Dans le cas où l'instance ne répondrait qu'à un alias TNS spécifique, vous pouvez spécifier cet alias ici. Pour la deuxième instance distante, TNSALIAS a pour valeur INST1.

Pour vous assurer que le programme sqlplus est également détecté, utilisez la variable REMOTE_ORACLE_HOME pour indiquer l'emplacement du client Oracle sur l'hôte qui exécute le plug-in de l'agent. Ce n'est qu'alors que toutes les ressources nécessaires aux requêtes seront disponibles.

Lors de l'interrogation d'instances distantes, certaines restrictions et fonctionnalités particulières s'appliquent :

  • Comme vous avez explicitement saisi les instances distantes dans le fichier de configuration, vous ne pouvez pas exclure ces instances à l'aide de SKIP_SIDS, et en contrepartie, vous n'avez pas besoin de les inclure à l'aide de ONLY_SIDS.

  • Les instances portant le même nom (SID) ne peuvent pas être attribuées au même hôte. Ceci est particulièrement important si vous récupérez des instances à partir de plusieurs hôtes distants et/ou locaux où des noms identiques sont utilisés.

4. Configuration à l'aide d'Agent Bakery

CEE La configuration peut être considérablement simplifiée dans les éditions commerciales grâce à Agent Bakery, car cela permet d’éviter les erreurs de syntaxe dans les fichiers de configuration et de mettre en œuvre plus facilement les adaptations aux environnements changeants. La principale différence par rapport à une configuration manuelle réside dans le fait que vous ne devez intervenir sur l’hôte Oracle en ligne de commande que si vous souhaitez effectuer des configurations spécifiques à Oracle. Vous pouvez effectuer la configuration avec Agent Bakery sous Linux, Solaris, AIX et Windows.

Toutefois, vous ne pouvez pas configurer toutes les fonctions du plug-in d'agent avec Agent Bakery, par exemple s'il s'agit de fonctions nécessitant une intervention importante et des connaissances spécialisées approfondies. Par conséquent, les requêtes SQL personnalisées ne peuvent pas être configurées dans Agent Bakery.

Via Setup > Agents > Windows, Linux, Solaris, AIX et le menu Agents > Agent rules, vous trouverez la page contenant le jeu de règles «Oracle databases (Linux, Solaris, AIX, Windows)». Créez une nouvelle règle avec «Add rule». Vous trouverez ici toutes les options disponibles pour configurer le plug-in de l'agent :

Rule for configuring Oracle in the Agent Bakery.

De nombreuses options vous seront familières si vous avez déjà effectué une configuration manuelle. Comme indiqué dans ce document, certaines options ne sont pas disponibles pour tous les systèmes d’exploitation. Le titre de ces options indique les systèmes d’exploitation sur lesquels elles peuvent être utilisées.

4.1. Configuration des utilisateurs

Dans la configuration la plus simple pour un système d'exploitation de type Unix, la règle ressemblera à ceci :

Simplest rule for configuring Oracle in the Agent Bakery.

Dans l’Agent Bakery, vous avez également la possibilité de créer des utilisateurs standard et de définir des exceptions pour des instances spécifiques. Les options séparées par des deux-points (pour Linux & Co.) ou sous forme d’entrées de liste (pour Windows) dans le fichier de configuration se trouvent sous Login Defaults en tant qu’options individuelles, que vous pouvez ensuite remplir en conséquence. Bien entendu, vous pouvez également utiliser Oracle Wallet ici en remplaçant simplement Authentication method par Use manually created Oracle password wallet.

Vous pouvez configurer la gestion automatique du stockage (ASM) de la même manière à l'aide de l'option Login for ASM, et saisir les exceptions pour des instances spécifiques sous Login for selected databases, comme décrit dans la configuration utilisateur avancée.

4.2. Options avancées

Le tableau suivant répertorie les autres options du jeu de règles « Oracle databases (Linux, Solaris, AIX, Windows) », ainsi qu’une référence indiquant où trouver une description de l’option :

Option Description

Host uses xinetd or systemd (Linux/AIX/Solaris only)

Cette option doit être activée pour les systèmes de type Unix avec xinetd / systemd. Avec systemd, l'exécution asynchrone du plug-in de l'agent est obligatoire — à l'intervalle que vous spécifiez. Pour plus d'informations, consultez la section Installation du plug-in de l'agent.

Instances to monitor

Cette option regroupe plusieurs options du fichier de configuration qui vous permettent d'inclure ou d'exclure des instances sous Linux, Solaris, AIX ou Windows.

Add pre or postfix to TNSALIASes (Linux/AIX/Solaris only)

Cette option vous permet d’étendre l’alias TNS soit globalement, soit pour une instance spécifique.

Sections - data to collect

Toutes les sections disponibles sont répertoriées sous cette option et peuvent être configurées individuellement au niveau global. Elles correspondent donc aux variables SYNC_SECTIONS et ASYNC_SECTIONS et, pour ASM, à leurs équivalents SYNC_ASM_SECTIONS et ASYNC_ASM_SECTIONS. Pour plus d’informations, consultez la section relative aux données à récupérer.

Exclude some sections on certain instances

Si vous souhaitez exclure uniquement quelques sections plutôt que l'instance entière avec EXCLUDE_<SID>, vous pouvez le spécifier à l'aide de cette option, comme décrit dans la section sur les données à récupérer.

Cache age for background checks

Spécifiez ici la durée pendant laquelle les sections asynchrones doivent rester valides. La valeur par défaut est de 600 secondes (10 minutes).

Sqlnet Send timeout

Cette option est ajoutée au fichier sqlnet.ora et définit un délai d'expiration qui s'applique à toutes les instances.

Remote instances (Linux/AIX/Solaris only)

Configurez les instances distantes à l’aide de cette option. Elle contient tous les éléments de la configuration que vous connaissez déjà. Pour spécifier l’ID de la variable, vous pouvez choisir parmi différentes options via Unique ID. Vous devez simplement vous assurer que l’ID est unique au sein de la configuration.

ORACLE_HOME to use for remote access (Linux/AIX/Solaris only)

Vous pouvez ici déterminer où le plug-in de l'agent trouve le programme sqlplus. Vous devez saisir une valeur ici si vous souhaitez surveiller une instance distante, mais que sqlplus ne peut pas être trouvé via les variables d'environnement.

TNS_ADMIN to use for sqlnet.ora and tnsnames.ora (Linux/AIX/Solaris only)

Si les deux fichiers se trouvent dans un répertoire autre que /etc/check_mk/, vous pouvez utiliser cette option pour spécifier le chemin d'accès via la variable d'environnement TNS_ADMIN.

sqlnet.ora permission group (Linux/AIX/Solaris only)

Saisissez ici le groupe Linux de l'utilisateur non privilégié propriétaire des binaires Oracle afin que cet utilisateur puisse lire le fichier sqlnet.ora créé par Agent Bakery. Pour une installation Oracle standard, oinstall peut être utilisé comme groupe.
Pour plus d’informations, consultez la section Droits d’accès lors de l’exécution. Cette section répertorie également d’autres fichiers et répertoires pour Linux, tels que tnsnames.ora, qui ne sont pas créés par Agent Bakery. Pour ces fichiers et répertoires créés manuellement, vous devez également spécifier les autorisations nécessaires manuellement.

Oracle binaries permissions check (Windows only)

Vous pouvez ici configurer la vérification des droits d'accès pour les binaires Oracle en autorisant des utilisateurs et des groupes individuels, non administrateurs, à exécuter les programmes. Vous ne devez désactiver cette vérification que si vous savez exactement ce que vous faites. Vous trouverez plus d'informations à ce sujet dans la partie Windows de la section Droits d'accès pendant l'exécution.

5. Instances en cluster

5.1. Bases de données de secours

Oracle prend en charge ce que l'on appelle des bases de données de secours, qui peuvent effectuer des tâches spécifiques et qui sont généralement de simples copies des bases de données de production ou primaires. Ces concepts de base de données nécessitent également des mécanismes de surveillance spécifiques. Vous trouverez plus d'informations sur ces mécanismes dans les sections suivantes.

Avec Active Data Guard (ADG)

Une fois que vous avez obtenu la licence et activé ADG, vous n’avez pas besoin d’apporter de modifications à la configuration du plug-in de l’agent, car vous pouvez lire à partir d’une instance de secours à tout moment sans avoir à interrompre la synchronisation avec l’instance principale.

Sans Active Data Guard (ADG)

Si les instances ne disposent pas d'ADG, l'utilisateur à partir duquel les données de surveillance des instances de secours doivent être récupérées a besoin du rôle « SYSDBA ». Cette autorisation permet à l'utilisateur de récupérer au moins une partie des données, même si l'instance principale tombe en panne et que l'instance sur le serveur de secours n'a pas encore été basculée de « MOUNTED » vers « OPEN ».

Attribuez cette autorisation à l'utilisateur autorisé à récupérer les données des instances. Important : le fonctionnement peut différer de l'exemple suivant. Ici, le rôle est attribué à l'utilisateur tel qu'il a été créé dans l'exemple de configuration initiale :

sqlplus> grant sysdba to checkmk;
Copier la ou les commandes dans le presse-papiers
Commande(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Pour permettre au plug-in de l'agent d'interroger les données sur le serveur de secours en cas d'erreur, créez l'utilisateur sur l'instance principale, puis copiez le fichier de mots de passe sur le serveur de secours. Enfin, dans le fichier de configuration du plug-in, définissez le rôle de l'utilisateur sur « SYSDBA » :

/etc/check_mk/mk_oracle.cfg
# Syntax:
# DBUSER='USER:PASSWORD:ROLE:HOST:PORT:TNSALIAS'
DBUSER='checkmk:myPassword:sysdba'

Notez que la spécification d'un hôte, d'un port ou d'un alias TNS est facultative et peut être omise. De plus, le plug-in de l'agent doit bien sûr être installé sur l'hôte de l'instance principale ainsi que sur les hôtes des instances de secours.

Configuration des services de cluster

Du côté de Checkmk, il est nécessaire — que vous utilisiez ADG ou DG — de personnaliser les services et de les attribuer à un hôte de cluster. Les plug-ins de vérification correspondants ont déjà été préparés de manière à pouvoir également être configurés en tant que services de cluster. Créez un hôte de cluster dans Checkmk et ajoutez-y en tant que nœuds les différents hôtes Oracle sur lesquels les instances principale et de secours sont exécutées. Attribuez ensuite les services suivants à cet hôte de cluster :

  • ORA .* RMAN Backup

  • ORA .* Job

  • ORA .* Tablespaces

Vous n'aurez alors plus à vous soucier de l'instance d'où proviennent les données et vous aurez assuré une surveillance sans faille des services susmentionnés, même en cas de basculement de l'instance principale.

5.2. Real Application Cluster (RAC)

Comme il existe un stockage centralisé des données dans un RAC, il suffit ici de créer l’utilisateur pour le plug-in de l’agent une seule fois. Seul le plug-in de l’agent doit être installé et configuré sur chaque nœud du cluster Oracle.

Important : configurez toujours vous-même les nœuds du cluster et n’interrogez pas le listener Oracle SCAN. C’est le seul moyen de garantir le bon fonctionnement de l’accès via le plug-in de l’agent.

Configuration des services de cluster

Il est également judicieux de configurer les services de cluster pour un RAC. En plus des services que vous attribuez à l'hôte du cluster dans le cadre d'un Data Guard (actif), vous attribuez également les services suivants à l'hôte du cluster afin de garantir une surveillance sans interruption en cas de basculement :

  • ASM.* Diskgroup

  • ORA .* Recovery Area

6. Requêtes SQL personnalisées (SQL personnalisées)

6.1. Pourquoi des requêtes SQL personnalisées ?

Grâce à son plug-in d'agent, Checkmk fournit déjà un grand nombre de requêtes SQL permettant de surveiller vos instances de base de données. Afin de les adapter au plus grand nombre possible d'exigences techniques et de contenu, celles-ci sont bien sûr conservées sous une forme très générale.

Afin de pouvoir répondre aux exigences individuelles de chaque entreprise en matière de surveillance d’une base de données spécifique, Checkmk offre la possibilité de créer vos propres requêtes SQL personnalisées (ou « custom SQLs ») et de les récupérer via le plug-in agent. Ces requêtes SQL personnalisées sont ensuite automatiquement reconnues et surveillées en tant que services distincts dans l’interface Web.

Tip

L'utilisation de requêtes SQL personnalisées n'est possible que sous Linux, Solaris et AIX. Cette option n'est pas disponible sous Windows.

6.2. Requêtes SQL personnalisées simples

Rédaction de requêtes SQL

La manière la plus simple de connecter une telle requête SQL consiste à utiliser le plug-in Oracle Database: Custom SQLs. Pour ce faire, créez d'abord le fichier «MyCustomSQL.sql» dans le répertoire de configuration de l'agent sur l'hôte sur lequel la requête SQL doit être exécutée.

Voici un exemple illustrant la syntaxe :

/etc/check_mk/MyCustomSQL.sql
/*Syntax help in comments. The first word is always the key word and ends with a ":"*/

/*details:Text to display in the service detail output*/
prompt details: Some details for the service output;

/*perfdata:METRIKNAME=CURRENTVALUE;WARN;CRIT;MAX METRIKNAME=CURRENTVALUE2;WARN;CRIT;MAX*/
prompt perfdata:MyMetricName1=10;15;20;30 MyMetricName2=16;15;20;30;
prompt perfdata:MyMetricName3=21;15;20;30 MyMetricName4=15;15;20;30;

/*long:Text to display in the long output of the service*/
prompt long: Here comes some long output for the service;
prompt long: Here comes some more long output for the service;

/*exit:Status of the service as a number*/
prompt exit:2;
Copier le contenu du fichier dans le presse-papiers
Contenu du fichier copié avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Cet exemple montre d'une part que vous pouvez définir un nombre illimité d'instructions dans un tel fichier. D'autre part, la syntaxe est très similaire à celle d'une vérification locale, notamment en ce qui concerne les métriques. Plus précisément, cette syntaxe est ici beaucoup plus puissante, car elle permet de générer une sortie sur plusieurs lignes, qui est ensuite traitée sur le serveur Checkmk en tant que service. En principe, toutes les lignes sont facultatives et ne doivent pas nécessairement être remplies.

Voici le détail des mots-clés possibles :

  • details : Vous pouvez ici déterminer ce qui doit être affiché dans l’Summary du service généré. Cette ligne commence par le mot-clé suivi d’un deux-points. Le reste de la ligne correspond à la sortie.

  • perfdata : Les métriques sont transmises à l'aide de ce mot-clé. Au sein d'une ligne, vous pouvez créer autant de métriques que vous le souhaitez, chacune séparée par un espace. Vous pouvez également répartir l'affichage des métriques sur plusieurs lignes. Veillez simplement à toujours commencer par le mot-clé perfdata:.

  • long : Si le service doit générer une sortie longue pour le champ Details, vous pouvez le spécifier ici. Vous pouvez également utiliser ce mot-clé plusieurs fois pour créer plusieurs lignes dans le champ Details.

  • exit : Si la sortie doit avoir un certain statut, vous pouvez le spécifier ici. Les affectations connues 0, 1, 2, 3 sont disponibles pour les statuts OK, WARN, CRIT, UNKNOWN.

Tip

Vous n'avez pas besoin de définir manuellement le mot-clé « elapsed ». Il est généré automatiquement lors de l'exécution afin de vérifier le temps de traitement des instructions que vous avez définies.

Configuration du plug-in d'agent

Maintenant que vous avez défini votre première requête SQL très simple, faites-la connaître au plug-in de l'agent mk_oracle. Cela s'effectue via le fichier de configuration habituel, que vous pouvez compléter en conséquence :

/etc/check_mk/mk_oracle.cfg
SQLS_SECTIONS="mycustomsection1"

mycustomsection1 () {
    SQLS_SIDS="INST1"
    SQLS_DIR="/etc/check_mk"
    SQLS_SQL="MyCustomSQL.sql"
}

Avec la première option (SQLS_SECTIONS), vous déterminez les sections individuelles que vous souhaitez voir exécutées. Notez qu’ici, le terme « section » désigne une partie de la sortie du plug-in de l’agent — et non une partie d’une instance de base de données. Dans l’exemple, nous n’avons spécifié qu’une seule section (mycustomsection1), que nous avons ensuite décrite plus en détail juste après. Chaque section est en réalité une petite fonction appelée par le plug-in de l’agent.

Dans cette fonction, vous pouvez ensuite définir des détails supplémentaires et préciser à quelles instances (SQLS_SIDS) cette section s’applique. De plus, vous définissez également l’emplacement du fichier contenant les instructions SQL (SQLS_DIR) et le nom de ce fichier (SQLS_SQL).

Cette configuration simple suffit pour pouvoir voir le résultat dans Checkmk. Pour ce faire, effectuez une découverte de service et activez le nouveau service. Vous verrez ensuite ce nouveau service apparaître avec les autres services dans l'aperçu de l'hôte :

The new service created by custom SQL queries in the service list.

6.3. Options avancées

Les possibilités de surveillance à l'aide de requêtes SQL personnalisées vont bien sûr au-delà du simple exemple présenté ci-dessus. Vous trouverez ci-dessous un aperçu des variables disponibles que vous pouvez utiliser dans le fichier de configuration mk_oracle.cfg. Pour une description détaillée, vous pouvez également appeler le plug-in de l'agent mk_oracle avec l'option --help.

Tip

Les variables qui ne peuvent être définies qu'en dehors ou uniquement à l'intérieur d'une fonction de section sont signalées en conséquence. Toutes les autres peuvent être définies dans les deux sections. Si elles sont définies en dehors d'une section, elles s'appliquent globalement à toutes les sections.

Variable Brève description Facultatif

SQLS_SECTIONS

Les fonctions de section personnalisées à exécuter par le plug-in d'agent.
Cette variable ne peut être définie que globalement (en dehors d'une fonction de section).

Non

SQLS_SIDS

Les instances chargées d'exécuter la ou les sections.

Non

SQLS_DIR

Le chemin d'accès au répertoire dans lequel sont stockés les fichiers contenant les requêtes SQL personnalisées.

Non

SQLS_SQL

Le fichier contenant les instructions SQL d'une section.

Non

SQLS_SECTION_NAME

Le nom de la section que vous évaluez à l'aide d'un plug-in de vérification personnalisé pour les requêtes SQL personnalisées.

Oui

SQLS_SECTION_SEP

Séparateur des éléments individuels dans une ligne de la sortie, défini sous la forme d'un identifiant ASCII décimal. Cette variable ne peut être utilisée qu'en association avec la variable SQLS_SECTION_NAME. Nous vous recommandons de définir votre propre séparateur pour vos sections et d'utiliser l'identifiant ASCII 124 pour le caractère pipe (|), car le plug-in de l'agent sépare toujours les éléments de la sortie en cas d'erreur avec |, au format <SID>|FAILURE|<error description>. Les caractères suivants ne peuvent pas être utilisés comme séparateur : ; [ ] =

Oui

SQLS_ITEM_NAME

Spécifie une partie du nom du service généré. Par défaut, le nom du service est composé du SID et du nom du fichier contenant les requêtes SQL personnalisées. La valeur de cette variable remplace le nom du fichier dans le nom du service.
Cette variable ne peut être définie que localement (au sein d'une fonction de section). Elle ne peut pas être utilisée conjointement avec la variable SQLS_SECTION_NAME.

Oui

SQLS_MAX_CACHE_AGE

Effectue la même tâche que CACHE_MAXAGE, mais pour les requêtes SQL personnalisées.

Oui

SQLS_DBUSER

Définit un utilisateur individuel pour une section.

Oui

SQLS_DBPASSWORD

Définit le mot de passe de l'utilisateur défini avec « SQLS_DBUSER ».

Oui

SQLS_DBSYSCONNECT

Uniquement si l'utilisateur défini avec SQLS_DBUSER est SYSDBA ou SYSOPER, vous devez définir le rôle associé (SYSDBA ou SYSOPER) à l'aide de cette variable.

Oui

SQLS_TNSALIAS

Définit un alias TNS individuel pour une section.

Oui

6.4. Utilisation de vos propres plug-ins de vérification

Si les possibilités offertes par la syntaxe décrite ci-dessus ne sont pas suffisantes, vous pouvez également utiliser la variable SQLS_SECTION_NAME pour générer vos propres noms de section pour une ou plusieurs requêtes SQL et définir votre propre séparateur avec SQLS_SECTION_SEP. Cela nécessite toutefois que vous ayez également écrit un plug-in de vérification approprié et que vous l'ayez intégré à votre site Checkmk.

Si vous avez écrit un tel plug-in de vérification, vous êtes entièrement libre d'évaluer la sortie des sections personnalisées du plug-in d'agent et pouvez procéder à votre guise. Comme cette méthode est la plus complète, mais aussi la plus difficile, elle n’est mentionnée ici que par souci d’exhaustivité. Elle suppose que vous sachiez comment écrire un plug-in de contrôle basé sur un agent et l’intégrer au site. Ensuite, vous attribuez les requêtes SQL personnalisées avec les variables à ce plug-in de contrôle.

7. Options de diagnostic

Le plug-in de l'agent d'mk_oracles (Linux, Solaris, AIX) ou mk_oracle.ps1 (Windows) vous offre diverses options pour le diagnostic des erreurs. Les sections suivantes contiennent des informations sur le diagnostic dans les différents environnements.

7.1. Test des connexions

Si vous rencontrez des problèmes pour vous connecter à une ou plusieurs instances sur un serveur Oracle, la première chose à faire est de vérifier les paramètres de base.

Le test de connexion décrit ci-dessous vérifie également si les droits d'accès nécessaires sont définis lors de l'exécution. Si des droits d'accès font défaut, ceux-ci sont affichés avec des suggestions spécifiques pour y remédier. La procédure exacte pour diagnostiquer et corriger les droits d'accès est disponible dans la base de connaissances Checkmk.

Linux, Solaris, AIX
Windows
Linux, Solaris, AIX

Si vous lancez le plug-in de l'agent avec l'option « -t », celui-ci affiche les détails d'une connexion. Notez que le plug-in de l'agent doit disposer au préalable des chemins d'accès à son fichier de configuration et aux données mises en cache du plug-in. Dans la sortie, les sections factices ont été omises pour plus de lisibilité.

L'exemple suivant concerne un serveur Linux avec systemd, sur lequel le plug-in agent est exécuté de manière asynchrone toutes les 60 secondes :

root@linux# export MK_CONFDIR="/etc/check_mk/"; export MK_VARDIR="/var/lib/check_mk_agent/"
root@linux# /usr/lib/check_mk_agent/plugins/60/mk_oracle -t --no-spool
---login----------------------------------------------------------------
    Operating System:       Linux
    ORACLE_HOME (oratab):   /u01/app/oracle/product/11.2.0/xe
    Logincheck to Instance: XE
    Version:                11.2
    Login ok User:          checkmk on ORA-SRV01 Instance XE
    SYNC_SECTIONS:          instance dataguard_stats processes longactivesessions sessions recovery_status undostat logswitches recovery_area performance
    ASYNC_SECTIONS:         tablespaces rman jobs ts_quotas resumable
------------------------------------------------------------------------
Copier la ou les commandes dans le presse-papiers
Commande(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Sur un serveur Linux équipé d'xinetd, appelez plutôt mk_oracle pour le test de connexion comme suit :

root@linux# /usr/lib/check_mk_agent/plugins/mk_oracle -t
Copier la ou les commandes dans le presse-papiers
Commande(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Comme cet appel est plus susceptible d'être effectué en cas d'erreur, vous recevrez également des informations supplémentaires : La chaîne de connexion utilisée pour la connexion ainsi que les 100 premiers caractères du message d'erreur renvoyé lors de la tentative de connexion. Grâce à ces informations, vous pouvez rapidement identifier les problèmes de configuration simples et les corriger en conséquence.

Windows

7.2. Journalisation

Si l'erreur ne peut être identifiée par une simple vérification de la connexion, l'étape suivante consiste à créer un fichier journal qui consigne toutes les étapes du plug-in de l'agent.

Linux, Solaris, AIX
Windows
Linux, Solaris, AIX

N'oubliez pas non plus les variables d'environnement nécessaires ici.

Dans l'exemple suivant, la sortie des sections a également été omise pour améliorer la lisibilité.

Voici l'appel pour un serveur Linux équipé d'systemd sur lequel le plug-in de l'agent est exécuté de manière asynchrone toutes les 60 secondes :

root@linux# export MK_CONFDIR="/etc/check_mk/"; export MK_VARDIR="/var/lib/check_mk_agent/"
root@linux# /usr/lib/check_mk_agent/plugins/60/mk_oracle -l --no-spool
Start logging to file: /var/lib/check_mk_agent/log/mk_oracle.log
Copier la ou les commandes dans le presse-papiers
Commande(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Voici l'appel d'mk_oracle pour la journalisation sur un serveur Linux avec xinetd :

root@linux# /usr/lib/check_mk_agent/plugins/mk_oracle -l
Copier la ou les commandes dans le presse-papiers
Commande(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !
Windows

Vous pouvez utiliser les messages de journal générés pour identifier très précisément sur quelle ligne du script le problème s'est produit.

7.3. Débogage

Si vous ne parvenez pas à identifier le problème, même à l'aide du journal, le plug-in de l'agent fournit, en dernier recours, la sortie complète de toutes les étapes pour l'analyse des erreurs. Cette sortie est donc la méthode la plus complète, et certainement la plus difficile à lire, pour déterminer la cause d'un problème ; elle ne doit donc être utilisée qu'en dernier recours.

Linux, Solaris, AIX
Windows
Linux, Solaris, AIX

Voici un exemple de débogage sur un serveur Linux équipé d'systemd sur lequel le plug-in de l'agent s'exécute de manière asynchrone toutes les 60 secondes :

root@linux# export MK_CONFDIR="/etc/check_mk/"; export MK_VARDIR="/var/lib/check_mk_agent/"
root@linux# /usr/lib/check_mk_agent/plugins/60/mk_oracle -d --no-spool
Copier la ou les commandes dans le presse-papiers
Commande(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Voici l'appel de la commande « mk_oracle » pour le débogage sur un serveur Linux avec l'option « xinetd » :

root@linux# /usr/lib/check_mk_agent/plugins/mk_oracle -d
Copier la ou les commandes dans le presse-papiers
Commande(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !
Tip

Les données sensibles telles que les mots de passe ne sont pas masquées dans cette sortie. Tout est donc lisible en texte clair.

Windows

7.4. Messages d'erreur dans les fichiers journaux Oracle

L'utilisateur de la base de données chargé de la surveillance n'a généralement pas besoin du rôle « SYSDBA ». Notez toutefois que l'mk_oracle du plug-in de l'agent peut générer des messages d'erreur (sans incidence sur la surveillance) avec des bases de données multi-locataires, qui peuvent ne pas être consignés dans les fichiers journaux de la base de données Oracle en raison de l'absence du privilège « SYSDBA ». Cela peut alors entraîner, par exemple, l'apparition de messages d'erreur Oracle de type « ORA-01031: insufficient privileges » dans un fichier journal d'alerte.

8. Fichiers et répertoires

8.1. Sur l'hôte Oracle

Linux, Solaris, AIX
Windows
Linux, Solaris, AIX
Chemin d'accès au fichier Description

/usr/bin/check_mk_agent

L'agent Checkmk qui collecte toutes les données relatives à l'hôte.

/usr/lib/check_mk/plugins/mk_oracle/

Le plug-in de l'agent Oracle se trouve dans le répertoire habituel des plug-ins d'agent. Veuillez noter que le chemin d'accès sous AIX est légèrement différent : /usr/check_mk/lib/plugins/mk_oracle

/etc/check_mk/oracle.cfg

Le fichier de configuration du plug-in d'agent. Là encore, AIX présente une différence : /usr/check_mk/conf/mk_oracle.cfg

/etc/check_mk/sqlnet.ora

Le fichier de configuration requis pour Oracle Wallet.

/etc/check_mk/tnsnames.ora

Le fichier de configuration contenant les alias TNS. Des fichiers d'exemple se trouvent également dans l'installation Oracle, mais comme le chemin d'accès varie d'une installation à l'autre, il ne peut pas être spécifié de manière standardisée.

Windows

8.2. Sur le serveur Checkmk

Chemin d'accès Description

~/share/check_mk/agents/plugins/mk_oracle

Le plug-in d'agent pour les systèmes de type Unix, qui récupère les données sur l'hôte Oracle.

~/share/check_mk/agents/plugins/mk_oracle_crs

Ce plug-in d'agent pour les systèmes de type Unix fournit des données à un gestionnaire de cluster Oracle.

~/share/check_mk/agents/windows/plugins/mk_oracle.ps1

Le plug-in d'agent pour Windows, qui récupère les données sur l'hôte Oracle.

~/share/check_mk/agents/cfg_examples/

Vous trouverez des exemples de fichiers de configuration pour les systèmes de type Unix dans les fichiers mk_oracle.cfg, sqlnet.ora et tnsnames.ora.

~/share/check_mk/agents/windows/cfg_examples/mk_oracle_cfg.ps1

Un exemple de fichier de configuration pour Windows.


Last modified: Thu, 26 Mar 2026 08:22:01 GMT via commit e952de58f
Sur cette page