Zabbix Nginx

Je continue sur ma lancé avec la supervision de NGINX avec zabbix. Plusieurs sites effectue cette opération via des scripts. Comme je l’ai dis dans mon précédent article, je préfèré une solution qui fonctionne « out of the box » (comme dirait les commerciaux).

Nginx dispose d’un module de status (a la apache) . Si vous voulez avoir plus d’informations sur ce qu’il monitore, je vous conseil de lire la documentation officiel.

Maintenant que l’on sais ce que l’on va monitorer, voici comment il faut faire :

Création d’un virtualhost spécifique accessible uniquement par l’agent zabbix :

Au niveau de votre serveur NGINX, il faut créer un virtualhost avec la configuration suivante :

server {
      listen 127.0.0.1:8080; # écoute en local sur un port différent
      location / {
          stub_status on; # on charge le module de status
          access_log off; # on ne logge pas inutilement les accès
          allow 127.0.0.1; # autorisation uniquement depuis le localhost
          deny all; # on refuse tout le reste
       }
 }

et bien sur faire un reload de NGINX a la fin de votre configuration

Modification du fichier zabbix_agentd.conf

Afin que le système prenne en compte les futurs checks contenu dans le template on ajoute ces paramètres utilisateurs à la configuration de l’agent zabbix (zabbix_agentd.conf):

UserParameter=nginx.active[*],wget -O- -q $1:$2 | awk ‘/^Active/ {print $NF}’
UserParameter=nginx.reading[*],wget -O- -q $1:$2 | awk ‘/Reading/ {print $$2}’
UserParameter=nginx.writing[*],wget -O- -q $1:$2 | awk ‘/Writing/ {print $$4}’
UserParameter=nginx.waiting[*],wget -O- -q $1:$2 | awk ‘/Waiting/ {print $$6}’
UserParameter=nginx.accepted[*],wget -O- -q $1:$2 | awk ‘/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$1}’
UserParameter=nginx.handled[*],wget -O- -q $1:$2 | awk ‘/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$2}’
UserParameter=nginx.requests[*],wget -O- -q $1:$2 | awk ‘/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$3}’

Il ne reste plus qu’a importer et associer à vos hosts le template Zabbix qui suit : Template_nginx

3 commentaires

  1. Salut,

    Il faudra que je mette ça en place sur mon serveur 🙂
    Je note l’astuce, en tout cas…

    Dans le fond je me demande juste aujourd’hui quelle serait l’utilité pour moi d’avoir ces infos, mais j’imagine que le jour où mon serveur connaîtra des fortes charges ça pourra m’aider…

    Par contre, le thème WordPress que tu as choisi semble truffé de liens bizarroïdes, en tout cas dans le pied de page (« Lightword Theme translated by Toute la finance, A remuweb and Mode et Chaussures ») : on dirait des liens pour augmenter le ranking de ces adresses dans Google : en gros, celui qui a fait ce thème exploite ton blog pour faire monter le score de domaines qu’il vendra ensuite au prix cher (car ayant un bon ranking).

    1. Bonsoir,

      je me suis posé la même question, puis je me suis dit : meh… et op je me suis lancé dedans, il faut bien que je mette le pied à l’étrier sur la solution.
      J’en profite pour te remercier pour ton post du Mysql + Zabbix ça m’a beaucoup aidé.

      Et merci (encore) pour le footer, je n’avais jamais fait attention 🙂

  2. Mieux vaut monitorer le access.log pour voir le temps des requêtes, la provenance etc… (dans mon cas pour le ecommerce, j’envois une alert si pas de panier depuis 1 heure), mais monitorer le nginx de cette façon est pas très utile.

    Il y a aussi php-fpm qui a un endpoint status (statistiques intéressante sur la pool).

    La je cherche un patch Nginx pour diriger le access.log directement dans Zabbix, des idées ?

Laisser un commentaire

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