Archives de catégorie : Monitoring

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à !

Surveiller le contenu d’un dossier Windows avec Zabbix

Le cas est le suivant : j’ai un dossier dans un serveur Windows qui est partagé sous forme d’un lecteur réseau auprès des salariés de mon entreprise.

Dans une invite de commande, afficher les répertoires contenus dans un dossier se fait avec la commande suivante :

dir "Chemin_du_dossier" /A:D /B

Le paramètre /B permet de ne ressortir que les noms de dossier, pas leur date de modification. Ainsi, le texte retourné est toujours le même tant que un dossier n’a pas été supprimé, ajouté ou renommé.

Mise en oeuvre

Client zabbix

Au niveau du serveur Windows, on ajoute un paramètre utilisateur dans le fichier de configuration zabbix_agentd.win.conf :

UserParameter=QFolderList[*], dir "c:\Services" /A:D /B

(où c:\Services est le chemin local du dossier à surveiller). On redémarre ensuite le service Zabbix sur le serveur windows.

Item

Voici les principaux points à configurer :

  • Type : Zabbix agent
  • Key : Le nom spécifié dans le fichier de configuration, dans mon cas QFolderList
  • Type of Information : Text
  • Update Interval : Attention ! Le volume peut être important ! (dans mon cas j’ai mis 2h (7200s)

zabbix_win_folder_list-1

Trigger

Je choisis ici de recevoir une alerte par email quand la valeur change, j’utilise donc la fonction .diff(0)

zabbix_win_folder_list-2Action

Rien de spécial, un simple envoi par mail quand le trigger passe en « PROBLEM » :

zabbix_win_folder_list-3

Avec Zabbix, détecter si un reboot est necessaire suite à des mises à jour sous Debian / Ubuntu

Pour savoir si un serveur Linux attend un redémarrage, il suffit de vérifier si le fichier /var/run/reboot-required existe. S’il est présent, un redémarrage est à faire.

Pour la mise en place du monitoring de cet élément avec Zabbix, il suffit de créer un item de ce genre :

  • ITEM :
    • Type : Zabbix agent
      • Key : vfs.file.exists[/var/run/reboot-required]
      • Type of information : Numeric (unsigned)
      • Data type : Boolean

Votre item devait alors ressembler à ceci :

linux reboot required item

On peut ensuite y associer un trigger pour avoir une alerte si un redémarrage est à faire :

  • TRIGGER :
    • Expression : {<Template utilisé>:vfs.file.exists[/var/run/reboot-required],last()}=1

Votre trigger devait alors ressembler à ceci :

linux reboot required trigger

 

 

Et enfin voilà le genre d’alerte qui peut être générée :

linux reboot required alerts