Utiliser Zabbix pour surveiller le service d’un SQL Server Express

Pour monitorer un service SQL Serveur Express, il existe une petite subtilité par-apport à un service SQL Serveur standard.

En effet, avec la version Express, le nom du service intègre le nom de l’instance de base de donnée. Exemple : MSSQL$SQLEXPRESS si vous utilisez le nom d’instance par défaut.

Le problème, si on veut surveiller le service avec Zabbix, c’est que l’on est obligé d’utiliser le LLD (Low Level Discovery) car le nom du service est potentiellement toujours différent selon le serveur.

Voici la méthode que j’ai mise en œuvre pour une surveillance de base du statut du service, sans avoir à utiliser des scripts Powershell ou d’autres fichiers annexes.

Configuration de l’expression régulière

Dans Administration -> Général -> Regular Expressions, on ajoute une nouvelle expression régulière avec les paramètres suivants :

Name : MSSQL_Express_Service_Name
Expressions :
Expression type : Character string included
Expression : MSSQL$

Configuration de la Discovery rule

Ouvrez un template existant ou créez en nouveau et allez dans Discovery rules -> Create discovery rule :

Name : SQL Server Express Service
Type : Zabbix agent
Key : service.discovery
Update interval : 120

Onglet Filters :
Macro : {#SERVICE.NAME}
Regular expression : @MSSQL_Express_Service_Name

Configuration de l’Item prototype

Dans Discovery rules -> Item prototypes -> Create Item prototype :

Name : SQL: Service State – {#SERVICE.DISPLAYNAME}
Type : Zabbix agent
Key : service.info[{#SERVICE.NAME}]

Configuration du Trigger prototype

Dans Discovery rules -> Trigger prototypes -> Create Trigger prototype :

Name : Service not running : {#SERVICE.DISPLAYNAME}
Expression : {TemplateName:service.info[{#SERVICE.NAME}].last()}<>0
Severity : High

Et voilà !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.