Superviser Microsoft SQL Server avec Centreon
Le connecteur Microsoft SQL Server de Centreon interroge directement le moteur de base de données depuis le collecteur. Voici ce qu'il faut préparer côté SQL Server, côté collecteur et dans l'interface, puis comment régler des seuils qui veulent dire quelque chose.
Une base SQL Server se dégrade avant de tomber : journaux qui grossissent, processus bloqués, travaux de l'Agent SQL en échec, sauvegarde arrêtée. La supervision SQL Server avec Centreon sert à voir ces signaux avant les utilisateurs.
Le connecteur de supervision (monitoring connector, anciennement Plugin Pack) Microsoft SQL Server ne passe ni par SNMP ni par un agent installé sur le serveur Windows. La sonde s'exécute sur le collecteur (poller), ouvre une connexion SQL vers l'instance avec un compte dédié, et lit l'état du moteur. Si la notion de connecteur vous est nouvelle, commencez par l'organisation de la supervision avec Centreon et ses connecteurs.
Testez la configuration sur une instance de laboratoire avant de l'appliquer à une base de production, et sauvegardez la configuration Centreon avant de déployer.
Ce que le connecteur mesure
La documentation Centreon décrit un modèle d'hôte, App-DB-MSSQL-custom, et deux familles de services. Les premiers sont créés automatiquement avec le modèle d'hôte ; les seconds doivent être ajoutés à la main, en créant un service et en lui appliquant le modèle voulu.
| Créés avec le modèle d'hôte | À ajouter manuellement |
|---|---|
| Blocked-Processes (processus bloqués) | Backup-Age (âge des sauvegardes) |
| Connected-Users (utilisateurs connectés) | Cache-Hitratio (taux de succès du cache) |
| Connection-Time (temps de connexion) | Locks-Waits (attentes de verrous) |
| Databases-Size (fichiers de données et journaux) | Page-Life-Expectancy |
| Deadlocks (interblocages) | Sql-Statement (requête libre, résultat numérique) |
| Failed-Jobs (travaux en échec) | Sql-Statement-String (requête libre, résultat texte) |
| Transactions (transactions par seconde) |
Le point à retenir : Backup-Age n'est pas créé par défaut. C'est pourtant lui qui dit depuis quand chaque base n'a pas été sauvegardée : ajoutez-le dès le départ.
Préparer le côté SQL Server
Un compte de supervision aux droits limités
La documentation Centreon est explicite : le rôle serveradmin peut servir à un test, mais ne doit jamais être utilisé en production en raison du risque de sécurité. Elle renvoie vers un script de préparation publié par le projet de la sonde check_mssql_health pour créer un utilisateur aux privilèges réduits, et recommande un compte de domaine, plus simple à gérer.
- Créez un compte dédié à la supervision, jamais un compte d'administration partagé.
- Accordez-lui seulement les droits de lecture nécessaires, à l'aide du script cité par Centreon.
- Notez l'identifiant au format
UTILISATEUR@DOMAINEsi vous utilisez un compte de domaine, comme dans l'exemple de la documentation.
Un port fixe, surtout pour une instance nommée
Selon Microsoft, l'instance par défaut du moteur SQL Server écoute sur le port TCP 1433, mais les instances nommées sont configurées pour des ports dynamiques : elles choisissent un port libre à chaque démarrage du service. Un collecteur situé derrière un pare-feu ne peut pas suivre un port qui change.
Pour superviser une instance SQL nommée, fixez son port dans le Gestionnaire de configuration SQL Server (propriétés TCP/IP, onglet des adresses IP, section IPAll), en vidant le champ des ports dynamiques s'il contient 0, puis redémarrez le service. Ouvrez ensuite ce port depuis l'adresse du collecteur uniquement.
Préparer le collecteur
La sonde s'appuie sur FreeTDS et le pilote Perl DBD::Sybase. Sur Alma Linux, RHEL ou Oracle Linux 8 et 9, la documentation liste les paquets freetds, perl-DBD-Sybase et unixODBC ; sur Debian 11 et 12, freetds, libdbd-sybase-perl et unixODBC.
FreeTDS utilise par défaut la version 4.2 de son protocole. Centreon demande de passer à 8.0, version minimale prise en charge : dans /etc/freetds.conf (RHEL et dérivés) ou /etc/freetds/freetds.conf (Debian), décommentez la ligne version = 4.2 et remplacez la valeur par 8.0.
Installez ensuite le connecteur et la sonde. Avec une licence en ligne, le paquet du connecteur est inutile : il apparaît directement dans Configuration > Connectors > Monitoring Connectors. Avec une licence hors ligne, installez-le sur le serveur central :
dnf install centreon-pack-applications-databases-mssql
Depuis Centreon 22.04, l'installation automatique des sondes peut se charger du plugin. Si elle est désactivée, installez-le sur chaque collecteur concerné :
dnf install centreon-plugin-Applications-Databases-Mssql
Sur Debian, les paquets s'appellent centreon-pack-applications-databases-mssql et centreon-plugin-applications-databases-mssql, installés avec apt install.
Créer l'hôte dans Centreon
Dans Configuration > Hosts, créez l'hôte avec le nom, l'alias et l'adresse du serveur SQL, appliquez le modèle App-DB-MSSQL-custom, puis renseignez ses macros :
| Macro | Rôle | Valeur par défaut documentée |
|---|---|---|
MSSQLUSERNAME | compte de connexion | aucune valeur réelle |
MSSQLPASSWORD | mot de passe du compte | aucune valeur réelle |
MSSQLPORT | port de l'instance | 1433 |
EXTRAOPTIONS | options ajoutées à chaque commande | vide |
Pour une instance nommée, mettez dans MSSQLPORT le port fixe choisi plus haut. La sonde accepte aussi une option --server, alternative au couple nom d'hôte et port, qui renvoie à une entrée déclarée dans freetds.conf.
Déployez la configuration. La commande envoyée, macros comprises, s'affiche dans le panneau de détail de l'hôte sur la page Resources Status.
Tester la sonde en ligne de commande
Avant d'attendre le premier contrôle, testez depuis le collecteur sous le compte centreon-engine (su - centreon-engine). La documentation donne cette forme, avec le mode transactions :
/usr/lib/centreon/plugins/centreon_mssql.pl \
--plugin database::mssql::plugin \
--hostname 192.168.10.20 \
--port 1433 \
--username 'supervision@LAB.LOCAL' \
--password '<mot-de-passe>' \
--mode='transactions' \
--verbose
Une ligne commençant par OK: suivie de données de performance confirme que la connexion, le compte et FreeTDS fonctionnent. Pour obtenir la liste des modes disponibles :
/usr/lib/centreon/plugins/centreon_mssql.pl --plugin database::mssql::plugin --list-mode
Régler les seuils vous-même
La plupart des macros de seuil sont vides par défaut. Seul Blocked-Processes en porte une valeur documentée : alerte à partir de 1 processus bloqué, critique à 5. Plusieurs services (Transactions, Cache-Hitratio, Page-Life-Expectancy) sont décrits comme « sans alerte par défaut ».
Il n'existe pas de bon chiffre universel. La méthode la plus sûre :
- Laissez tourner une à deux semaines sans seuil et regardez les graphiques : ils montrent le niveau normal de votre charge.
- Fixez les seuils de capacité (Databases-Size) à partir de l'espace réellement disponible et du temps qu'il vous faut pour en ajouter.
- Fixez Backup-Age sur votre politique de sauvegarde, pas sur une valeur générique. La macro
UNITvautd(jours) par défaut ; les macrosWARNINGLASTEXECUTIONetCRITICALLASTEXECUTIONportent sur la dernière exécution, et des variantes existent pour les sauvegardes complètes, incrémentales et de journaux. - Excluez ce qui ne doit pas alerter : le filtre par défaut
^(?!(tempdb))écarte déjàtempdbde Databases-Size et de Backup-Age.
Les mêmes principes valent pour les autres connecteurs du site : la supervision HPE iLO pour le matériel du serveur, la supervision d'un switch Cisco pour le réseau qui le dessert. L'ensemble des tutoriels est regroupé dans la rubrique supervision avec Centreon.
Erreurs fréquentes
- Connexion refusée ou délai dépassé : port dynamique non fixé, pare-feu fermé, ou mauvais port dans
MSSQLPORT. - Échec d'authentification : format du compte ou mode d'authentification de l'instance.
- Erreur de protocole : version FreeTDS restée à 4.2.
Questions fréquentes
Faut-il installer un agent sur le serveur SQL Server ?
Non. La sonde MSSQL s'exécute sur le collecteur Centreon et se connecte à l'instance par le réseau avec un compte SQL ou de domaine. Il faut seulement que le port de l'instance soit joignable depuis le collecteur.
Quel compte utiliser pour la supervision SQL Server ?
Un compte dédié aux droits réduits, de préférence un compte de domaine. Centreon indique que le rôle serveradmin ne doit servir qu'à un test, jamais en production, et renvoie vers un script de préparation pour créer un utilisateur moins privilégié.
Comment superviser une instance nommée ?
Fixez son port TCP dans le Gestionnaire de configuration SQL Server, car une instance nommée utilise par défaut un port dynamique. Indiquez ensuite ce port dans la macro MSSQLPORT de l'hôte Centreon.
Pourquoi le service Backup-Age n'apparaît-il pas ?
Parce qu'il ne fait pas partie des services créés automatiquement par le modèle App-DB-MSSQL-custom. Créez un service manuellement et appliquez-lui le modèle App-DB-MSSQL-Backup-Age-custom.
Quels seuils mettre sur SQL Server ?
Ceux de votre environnement. Hormis les processus bloqués, la documentation ne fixe pas de seuil : observez d'abord les graphiques, puis réglez la capacité sur votre espace disque et l'âge des sauvegardes sur votre politique de sauvegarde.