Supervision Zabbix MS SQL

Supervision Zabbix MS SQL Server 2012/2014

Chez Syloé, notre offre de service se concentre autour des logiciels Open Source et en tant que tel, nous passons la plupart de notre temps à concevoir et gérer des plates-formes avec une majorité de Linux. Comme de nombreux clients ont des environnements mixtes, nous nous trouvons confrontés à la nécessité de gérer d’autres plates-formes, y compris MS Windows Server. Nous vous présentons aujourd’hui la supervision Zabbix MS SQL Server 2012/2014 indépendamment du langage.

Supervision Zabbix MS SQL Server : un outil puissant de supervision et personnalisable à souhait

supervision zabbix ms sql server

Comme exemple récent, nous avons réalisé un test de charge (avec Apache Jmeter) d’une application Tomcat avec Nginx en front-office et MS SQL Server 2014 en back-office. Nous utilisons Zabbix comme outil privilégié de supervision car il est très flexible et dispose de fonctionnalités avancées pour faire face aux réseaux de taille moyenne.

Nos prestations de services autour de la supervision Zabbix

Dans cet exemple, on a juste besoin d’appliquer certains modèles de Zabbix (Nginx, Linux, Java, Tomcat et quelques autres modèles spécifiques que nous avons construit pour surveiller des métriques de Linux) qui sont faciles à mettre en œuvre rapidement.

Comment faire dans le cas d’une supervision Zabbix MS SQL Server 2014?

monitoring et supervision zabbix des Microsoft MS SQL serveur

Eh bien, il existe un modèle pour Zabbix , vous pouvez le télécharger  sur Zabbix. Cela fonctionne très bien pour MS SQL Server 2012/2014 en langue anglaise ou Russe. Merci à Anton Golubkin de l’avoir mis à disposition de la communauté.

Cependant, notre client n’avait que le pack de langue française installé et configuré comme la langue du système.

Si la langue système du serveur à superviser n’est pas en anglais ou en russe, alors quelques modifications sont nécessaires dans le modèle avant de l’importer dans Zabbix.

Si vous importez ce modèle dans Zabbix sans modification, et que vous l’appliquez ensuite sur le serveur cible, vous allez rencontrer des problèmes avec les clés spécifiées qui ne seront pas prises en charge par le client Zabbix.

Afin de vérifier si vous avez besoin des modifications ou pas, vous pouvez exécuter ce type de commande sur le premier élément dans le modèle:

$ /opt/zabbix/bin/zabbix_get -p 10050 -s <HOST> -k “perf_counter[&quot;\SQLServer:Access Methods\Forwarded Records/sec&quot;,30]”

Si vous recevez la réponse appropriée, vous êtes sur la bonne voie. Dans le cas contraire, la tâche consiste à transformer le modèle en quelque chose qui fonctionne pour la langue du système cible.

Le modèle nous fournit des métriques, qui sont les résultats des compteurs de performance, y compris MS SQL Server. Les compteurs de performance disponibles (lorsque c’est activé) peuvent être affichées en utilisant la commande « typeperf -qx » en ligne de commande Windows. Pour le sous-ensemble de SQL Server, on aura des entrées telles que celui-ci, si la langue est le français:

“\SQLServer : Méthodes d'accès\Enregistrements transmis/s”

Notez que les compteurs performances doivent être activés sur le système supervisé. Sinon à l’exécution, vous pourriez avoir juste un message d’erreur (8310) qui dit:

 «Les compteurs de performances SQL Server sont désactivés».

Une solution à ce problème peut être trouvé en effectuant une recherche sur Technet en spécifiant la chaîne “Enable / Disable Performance Counter Logging”.

Supervision Zabbix MS SQL server

Supervision Zabbix MS SQL server en langue étrangère

Maintenant, si l’on veut superviser MS SQL Server en langue étrangère, nous avons les options suivantes :

1) Changer de langue système pour être en anglais ou russe

Cela aurait un impact plus grand que seulement la configuration du client zabbix et devrait ensuite être répété pour tous les serveurs MS SQL contrôlés … Pas une bonne solution.

2) Convertir le modèle vers la langue cible

Ça semble correct, c’est gérable d’avoir un modèle différent pour chaque langue de système supervisé.

3) Effectuer une conversion au niveau du client.

Laisser le modèle (générique) indépendant de la langue, on met en correspondance le nom de l’élément du modèle qui est en anglais avec la valeur de cet élément qui sera traité avec le paramètre adéquat en langue française.

4) Pleurer un peu

Pas généralement une bonne solution sur un lieu de travail.

Supervision Zabbix MS SQL server graph

A ce stade, il est important de comprendre que l’agent Zabbix n’aime pas les caractères spéciaux dans son fichier de configuration, de sorte que les options 2 et 3 nécessiteraient d’abord la conversion des caractères spéciaux en Unicode. Par exemple, si je renseigne un compteur générique “MSSQL_Access_Methods_Forwarded_Records »en éditant le fichier zabbix_agent.conf sur le système cible pour y inclure des lignes comme celle-ci:

“PerfCounter = MSSQL_Access_Methods_Forwarded_Records,"\SQLServer : Méthodes d'accès\Enregistrements transmis/s",60”

Je vais rencontrer des problèmes – l’agent Zabbix ne redémarre pas s’il y a des caractères spéciaux présents dans la valeur de la clé. Après la conversion en Unicode, ce problème disparaît car Zabbix supporte Unicode. Cependant, il est encore nécessaire de traduire de la langue source (anglais) vers la langue cible (français dans mon cas).

Heureusement, les compteurs de performance Microsoft peuvent également être nommés par une valeur numérique. Les avantages de la représentation numérique sont :

Supervision Zabbix MS SQL server graph

1) Supprime la nécessité d’ une traduction vers le français w/Unicode. Même avec Google Translate c’est parfois un jeu de devinette quand il ne s’agit pas d’un terme du langage populaire.

2) Plus besoin de faire quoi que ce soit du côté client

3) Utilisation d’un modèle unique pour toutes les langues du système

Les valeurs numériques correspondant aux valeurs des clés du modèle peuvent être identifiées à l’aide des données de Perflib dans le Registre. Vous pouvez trouver ces valeurs en utilisant l’entrée regedit « HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009 », où 009 indique la table anglaise.

Si vous copiez le contenu de cette table et recherchez le terme « SQLServer : Méthodes d’accès », vous trouverez le nombre « 2846 » juste au-dessus, désignant la valeur numérique de cet élément en particulier. Une recherche sur « Enregistrements transmis/s » indique le nombre « 2896 » qui lui est associé (numéro directement au-dessus du terme de recherche).

Ainsi, la valeur du modèle:

<key>perf_counter[&quot;\SQLServer:Access Methods\Forwarded Records/sec&quot;,30]</key>

correspond à la valeur numérique suivante dans le modèle converti.

<key>perf_counter[&quot;\2846\2896&quot;,30]</key>

Apparemment, ces valeurs ne changent pas entre les versions de MS SQL Server ; en tout cas, elles n’ont pas changé au cours de ces dernières années. Maintenant, au lieu d’avoir à traduire les éléments du modèle, il vous suffit d’user d’un grep / awk / sed afin d’effectuer les remplacements nécessaires dans le modèle et obtenir un modèle qui est indépendant de la langue.

J’espère que cet article vous est utile.

Mettre en place une supervision Zabbix MS SQL server avec un expert Syloé

2 réflexions au sujet de « Supervision Zabbix MS SQL Server 2012/2014 »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *