Support des bases de données

(MySQL et PostgreSQL)


Index

Introduction
Du passé, faisons table rase...
Pour commencer
Compiler en intégrant MySQL
Compiler en intégrant PostgreSQL
Paramétres de configuration

Définition des tables

Introduction

Ceci vous dira comment optionellement compiler à la fois le programme principal et les CGI pour qu'ils supportent nativement le stockage de divers types de données dans une ou plusieurs bases de données. Actuellement, seules les bases de données MySQL et PostgreSQL sont supportées, mais d'autres pourront l'être dans le futur.

Du passé faisons table rase...

Bien, avant de commencer et de rentrer dans les détails de l'intégration des bases de données, vous devez comprendre une chose. La méthode de stockage par défaut des données d'état, commentaires, etc. dans Nagios est (et restera probablement) les bons vieux fichiers texte. Les fichiers standard utilisés par les routines externes de gestion des données incluent le journal des évènements, le fichier de commentaires, et le fichier de mémorisation des états. Lors d'une installation par défaut, les informations complémentaires des hôtes et des services ne sont pas stockées dans leur propre fichier, mais dans les définitions complémentaires (ou étendues) des hôtes et services du fichier de configuration des CGI..

Si on suppose que vous comptez utiliser une base de données pour stocker tout ou partie des données externes, vous allez évidemment rencontrer du changement. Les données ne seront plus stockées dans des fichiers texte, mais dans une ou plusieurs bases de données. Comme je n'ai pas envie de réécrire une importante documentation, vous devrez faire mentalement les adaptions nécessaires. Vous devrez réaliser que les informations d'état ne sont plus dans le fichier journal des états, mais dans des tables quelque part dans la base de données. De même pour les autres types de données externes (arrêts, commentaires, information mémorisées, et informations complémentaires sur les hôtes).

Pour commencer

Tout d'abord, je suppose que vous avez installé et mis en marche un serveur de base de données MySQL [Anglais] ou PostgreSQL [Anglais],quelque part sur votre réseau et que les bibliothèques clientes appropriées sont installées sur la machine où vous allez installer et compiler Nagios. Je suppose également que vous savez comment créer des bases de données et des tables et gérer les comptes et la sécurité dans le système que vous allez utiliser. Dans le cas contraire, commencez par apprendre tout cela avant d'essayer de compiler Nagios avec intégration des bases de données.

Note très importante : lorsque vous (re)lancez le script de configuration [configure] pour ajouter l'intégration du stockage en base de données (comme cela sera décrit plus loin), assurez-vous de recompiler à la fois le programme principal et tous les CGI (en utilisant la commande make all) !!

Compiler en intégrant MySQL

Pour intégrer le stockage de divers types de données dans MySQL, vous devez ajouter un ou plusieurs paramètres au script de configuration.

Vous avez quelques décisions à prendre ici. D'abord, vous devez choisir quelles sont les données à conserver dans MySQL et quelles sont celles (s'il y en a ) que vous voulez laisser dans l'ancien format (fichiers texte). Utilisez la table ci-dessous pour déterminer les paramétres à fournir au script de configuration une fois que vous avez défini vos besoins. Note : le stockage dans MySQL des données des objets (service, hôte, et définitions de commande, etc.) n'est pas encore supporté.
[NdT : NagMin peut aider à gérer les hôtes et les services dans une base de données. A partir de MySQL, il peut créer les fichiers de configurations des hôtes et des services de Nagios.]

Type de données Paramétre du script "configure" Commentaires
Tous les types --with-mysql-xdata Utilisation de MySQL pour tous les types de données externes (données d'arrêt, données de commentaires, données d'état, données mémorisées, et données complémentaires). Pour l'instant, l'intégration des données des objets (définitions d'hôte et de service, etc.) n'est pas supportée.
Données de commentaire --with-mysql-comments Utilisation de MySQL pour les données de commentaire (en remplacement du fichier de commentaire standard)
Données d'état --with-mysql-status Utilisation de MySQL pour les données d'état (en remplacement du journal d'état standard)
Données mémorisées --with-mysql-retention Utilisation de MySQL pour les données mémorisées (en remplacement du fichier de mémorisation des états standard)
Données complémentaires --with-mysql-extinfo Utilisation de MySQL pour les données complémentaires (en remplacement des définitions standard hostextinfo[] et serviceextinfo[] du fichier de configuration des CGI)

Compiler en intégrant PostgreSQL

Pour intégrer le stockage de divers types de données dans PostgreSQL, vous devez ajouter un ou plusieurs paramètres au script de configuration.

Vous avez quelques décisions à prendre ici. D'abord, vous devez choisir quelles sont les données à conserver dans PostgreSQL et quelles sont celles (s'il y en a ) que vous voulez laisser dans l'ancien format (fichiers texte). Utilisez la table ci-dessous pour déterminer les paramétres à fournir au script de configuration une fois que vous avez défini vos besoins. Note : le stockage dans PostgreSQL des données des objets (service, hôte, et définitions de commande, etc.) n'est pas encore supporté.

Type de données Paramétre du script "configure" Commentaires
Tous les types --with-pgsql-xdata Utilisation de PostgreSQL pour tous les types de données externes (données d'arrêt, données de commentaires, données d'état, données mémorisées, et données complémentaires). Pour l'instant, l'intégration des données des objets (définitions d'hôte et de service, etc.) n'est pas supportée.
Données de commentaire --with-pgsql-comments Utilisation de PostgreSQL pour les données de commentaire (en remplacement du fichier de commentaire standard)
Données d'état --with-pgsql-status Utilisation de PostgreSQL pour les données d'état (en remplacement du journal d'état standard)
Données mémorisées --with-pgsql-retention Utilisation de PostgreSQL pour les données mémorisées (en remplacement du fichier de mémorisation des états standard)
Données complémentaires --with-pgsql-extinfo Utilisation de PostgreSQL pour les données complémentaires (en remplacement des définitions standard hostextinfo[] et serviceextinfo[] du fichier de configuration des CGI)

Paramétres de configuration

Une fois que vous avez choisi les types de données externes que vous voulez stocker dans une ou plusieurs bases de données, il vous faut ajouter des paramétres de configuration au fichier de ressources et/ou au fichier de configuration des CGI. Allons-y...

Configuration des données liées aux arrêts: (paramétre --with-mysql-comments ou--with-pgsql-comments) :

Dans le fichier de configuration des CGI, vous devez ajouter les paramétres suivants (le paramétre downtime_file du fichier de configuration principal n'est plus utilisé)...

xcddb_host=database_host
xcddb_port=database_port
xcddb_username=database_user
xcddb_password=database_password
xcddb_database=database_name

Ces paramétres sont assez parlants. Ils sont utilisés par les CGI pour identifier l'adresse de votre serveur de base de données (et le port qu'il utilise), le nom de la base de données dans laquelle les commentaires doivent être stockés, et le nom d'utilisateur/mot de passe à utiliser lors de la connexion au serveur de base de données. Nagios présume que deux tables (telles qu'elles sont définies ici) ont été créées dans cette base de données pour le stockage des données d'arrêts. Note : les CGI n'ont besoin d'accéder aux données d'arrêts qu'en lecture, cet utilisateur ne doit donc avoir que le droit SELECT sur les tables des arrêts..

Dans un fichier de ressources, vous devez ajouter les paramétres suivants...

xcddb_host=database_host
xcddb_port=database_port
xcddb_username=database_user
xcddb_password=database_password
xcddb_database=database_name
xcddb_optimize_data=[0/1]

Ces paramétres sont identiques à ceux fournis dans le fichier de configuration des CGI, mais sont utilisés par le processus de Nagios. L'utilisateur de la base de données que vous spécifiez ici doit avoir les droits SELECT, INSERT, UPDATE, et DELETE sur les tables des arrêts. Les CGI n'essaient pas de lire le contenu des fichiers de ressources, vous pouvez donc y restreindre les droits d'accès et vous assurer ainsi que personne d'autre que le processus de Nagios ne peut les lire. Le paramétre xcddb_optimize_data force Nagios à optimiser les données dans les tables des arrêts lorsqu'il démarre/redémarre. Si vous utilisez PostgreSQL pour stocker les données des arrêts, cela signifie qu'un VACUUM est exécuté sur les tables de données des arrêts.

Configuration des données de commentaire : (paramétre --with-mysql-comments ou--with-pgsql-comments) :

Dans le fichier de configuration des CGI, vous devez ajouter les paramétres suivants (le paramétre comment_file du fichier de configuration principal n'est plus utilisé)...

xcddb_host=database_host
xcddb_port=database_port
xcddb_username=database_user
xcddb_password=database_password
xcddb_database=database_name

Ces paramétres sont assez parlants. Ils sont utilisés par les CGI pour identifier l'adresse de votre serveur de base de données (et le port qu'il utilise), le nom de la base de données dans laquelle les commentaires doivent être stockés, et le nom d'utilisateur/mot de passe à utiliser lors de la connexion au serveur de base de données. Nagios présume que deux tables (telles qu'elles sont définies ici) ont été créées dans cette base de données pour le stockage des données de commentaire. Note : les CGI n'ont besoin d'accéder aux commentaires qu'en lecture, cet utilisateur ne doit donc avoir que le droit SELECT sur les tables de commentaires.

Dans un fichier de ressources, vous devez ajouter les paramétres suivants...

xcddb_host=database_host
xcddb_port=database_port
xcddb_username=database_user
xcddb_password=database_password
xcddb_database=database_name
xcddb_optimize_data=[0/1]

Ces paramétres sont identiques à ceux fournis dans le fichier de configuration des CGI, mais sont utilisés par le processus de Nagios. L'utilisateur de la base de données que vous spécifiez ici doit avoir les droits SELECT, INSERT, UPDATE, et DELETE sur les tables de commentaires. Les CGI n'essaient pas de lire le contenu des fichiers de ressources, vous pouvez donc y restreindre les droits d'accès et vous assurer ainsi que personne d'autre que le processus de Nagios ne peut les lire. Le paramétre xcddb_optimize_data force Nagios à optimiser les données dans les tables de commentaires lorsqu'il démarre/redémarre. Si vous utilisez PostgreSQL pour stocker les données de commentaires, cela signifie qu'un VACUUM est exécuté sur les tables de données de commentaires.

Configuration des données d'état : (paramétre --with-mysql-status ou --with-pgsql-status) :

Dans le fichier de configuration des CGI, vous devez ajouter les paramétres suivants (le paramétre status_file du fichier de configuration principal n'est plus utilisé)...

xsddb_host=database_host
xsddb_port=database_port
xsddb_username=database_user
xsddb_password=database_password
xsddb_database=database_name

Ces paramétres sont assez parlants. Ils sont utilisés par les CGI pour identifier l'adresse de votre serveur de base de données (et le port qu'il utilise), le nom de la base de données dans laquelle les états doivent être stockés, et le nom d'utilisateur/mot de passe à utiliser lors de la connexion au serveur de base de données. Nagios présume que trois tables (telles qu'elles sont définies ici) ont été créées dans cette base de données pour le stockage des données de d'état. Note : les CGI n'ont besoin d'accéder aux états qu'en lecture, cet utilisateur ne doit donc avoir que le droit SELECT sur les tables d'état.

Dans un fichier de ressources, vous devez ajouter les paramétres suivants...

xsddb_host=database_host
xsddb_port=database_port
xsddb_username=database_user
xsddb_password=database_password
xsddb_database=database_name
xsddb_optimize_data=[0/1]
xsddb_optimize_interval=seconds

Ces paramétres-ci sont utilisés par le processus de Nagios au lieu des CGI. La seule différence entre ces paramétres et ceux du fichier de configuration des CGI est que l'utilisateur de la base de données spécifié ici doit avoir les droits SELECT, INSERT, UPDATE, et DELETE sur les tables d'état. Les CGI n'essaient pas de lire le contenu des fichiers de ressources, vous pouvez donc y restreindre les droits d'accès et vous assurer ainsi que personne d'autre que le processus de Nagios ne peut les lire. Le paramétre xsddb_optimize_data force Nagios à optimiser les données dans les tables d'états régulièrement. La fréquence d'optimisation est déterminée par le nombre de secondes spécifié dans le paramétre xsddb_optimize_interval. Si vous utilisez PostgreSQL pour stocker les données d'état, cela signifie qu'un VACUUM est exécuté sur les tables de données d'état.

Configuration des données mémorisées : (paramétre --with-mysql-retention ou --with-pgsql-retention) :

Dans un fichier de ressources, vous devez ajouter les paramétres suivants (le paramétre state_retention_file du fichier de configuration principal n'est plus utilisé)...

xrddb_host=database_host
xrddb_port=database_port
xrddb_username=database_user
xrddb_password=database_password
xrddb_database=database_name
xrddb_optimize_data=[0/1]

Ces paramétres sont assez parlants. Ils sont utilisés par le processus de Nagios pour identifier l'adresse de votre serveur de base de données (et le port qu'il utilise), le nom de la base de données dans laquelle les données mémorisées doivent être stockées, et le nom d'utilisateur/mot de passe à utiliser lors de la connexion au serveur de base de données. Nagios présume que trois tables (telles qu'elles sont définies ici) ont été créées dans cette base de données pour le stockage des données mémorisées. L'utilisateur que vous spécifiez ici doit avoir les droits SELECT, INSERT, UPDATE, et DELETE sur les tables de données mémorisées. Les CGI n'essaient pas de lire le contenu des fichiers de ressources, vous pouvez donc y restreindre les droits d'accès et vous assurer ainsi que personne d'autre que le processus de Nagios ne peut les lire. Le paramétre xrddb_optimize_data force Nagios à optimiser les données dans les tables de mémorisation lorsqu'il démarre/redémarre. Si vous utilisez PostgreSQL pour stocker les données mémorisées, cela signifie qu'un VACUUM est exécuté sur les tables de données mémorisées.

Configuration des données complémentaires : (paramétre --with-mysql-extinfo ou --with-pgsql-extinfo) :

Dans le fichier de configuration des CGI, vous devez ajouter les paramétres suivants (les paramétres hostextino[] et serviceextinfo[] du fichier de configuration des CGI ne sont plus utilisés)...

xeddb_host=database_host
xeddb_port=database_port
xeddb_username=database_user
xeddb_password=database_password
xeddb_database=database_name

Ces paramétres sont assez parlants. Ils sont utilisés par les CGI pour identifier l'adresse de votre serveur de base de données (et le port qu'il utilise), le nom de la base de données dans laquelle les données complémentaires doivent être stockées, et le nom d'utilisateur/mot de passe à utiliser lors de la connexion au serveur de base de données. Nagios présume que deux tables (telles qu'elles sont définies ici) ont été créées dans cette base de données pour le stockage des données de d'état. L'utilisateur que vous spécifiez ici n'a besoin que du droit SELECT sur les tables de données complémentaires.

Défintion des tables

Avant de pouvoir lire ou écrire en base de données, vous devez créer et configurer les tables où stocker vos données. Note : si vous stockez plusieurs types de données externes en base de données, vous pouvez créer des bases différentes pour chaque type de données (commentaires, états, etc.). Vous pouvez aussi tout laisser dans une seule base (les données différentes sont stockées dans des tables séparées). Dans votre(vos) base(s) de données, vous devez préparer les tables nécessaires pour que Nagios puisse y lire/écrire les données.

Important : les scripts de création de tables pour tous les types de données externes, aussi bien pour MySQL que PostgreSQL se trouvent dans le répertoire contrib/database/ de la distribution.

Tables de données liées aux arrêts:

Il y a deux tables (appelées hostdowntime et servicedowntime) à créer pour stocker les commentaires en base de données. Une de ces tables sert au stockage des arrêts concernant les hôtes et l'autre concernant les services. Les CGI n'ont besoin que du droit SELECT sur ces tables, alors que le processus de Nagios a besoin des droits SELECT, INSERT, UPDATE, et DELETE.

Tables de données de commentaires :

Il y a deux tables (appelées hostcomments et servicecomments) à créer pour stocker les commentaires en base de données. Une de ces tables sert au stockage des commentaires concernant les hôtes et l'autre concernant les services. Les CGI n'ont besoin que du droit SELECT sur ces tables, alors que le processus de Nagios a besoin des droits SELECT, INSERT, UPDATE, et DELETE.

Tables de données d'état :

Il y a trois tables (appelées programstatus, hoststatus, et servicestatus) à créer pour stocker les états en base de données. Une de ces tables sert au stockage des données d'état du programme, une autre au stockage des données d'état des hôtes, et la dernière au stockage des données d'état des services. Les CGI n'ont besoin que du droit SELECT sur ces tables, alors que le processus de Nagios a besoin des droits SELECT, INSERT, UPDATE, et DELETE.

Tables de données mémorisées :

Il y a trois tables (appelées programretention, hostretention, et serviceretention) à créer pour stocker les données mémorisées en base de données. Une de ces tables sert au stockage des données du programme, une autre au stockage des données des hôtes, et la dernière au stockage des données des services. Le programme principal a besoin des droits SELECT, INSERT, UPDATE, et DELETE sur ces tables. Les CGI n'accèdent pas du tout à ces tables.

Tables de données complémentaires :

Il y a deux tables (appelées hostextinfo et serviceextinfo) à créer pour stocker les données complémentaires en base de données. Une de ces tables sert au stockage des informations complémentaires sur les hôtes et l'autre au stockage des informations complémentaires sur les services (utilisées par les CGI). Les CGI doivent avoir le droit SELECT sur ces tables. Le processus de Nagios n'accède pas du tout à ces tables.