13 juillet 2009

Zabbix : Tester un process sous Windows

Je dois monitorer un certain nombre de process que ce soit sous Linux, AIX, Solaris ou Windows. J'utilise l'outil de supervision zabbix. Dernièrement, pour un projet je devais surveiller l'existence d'un process sous Windows. Justement, comment tester qu'un programme tourne bien sous Windows ?

D'une part, il faut coder un script en vbs et ensuite l'exécuter grâce à cscript.exe. Enfin, vous avez à ajouter une ligne de config dans le fichier zabbix_agentd.conf afin que le master zabbix puisse récupérer les dites infos.

1. Ci-dessous le script testProcess.vbs, il renvoit 1 si le process tourne et 0 s'il n'est pas démarré.

Function VerifProcess(objProcess)
For Each Process In GetObject("winmgmts:").InstancesOf("Win32_process")
    If UCase(Process.Name) = UCase(objProcess) Then
       VerifProcess = "1"
       Exit Function
    End If
Next
VerifProcess = "0"
End Function
'---------------
Wscript.echo VerifProcess("monProcess.exe")
Wscript.Quit

2. Je vous conseille de tester votre script. Faîtes un clic droit sur le fichier puis cliquez sur "Open with Command prompt", ce qui vous permettra de l'exécuter en local sur votre ordinateur.

En effet, il m'est déjà arrivé de planter un serveur à cause d'une erreur de script. Je remercie au passage mon collègue (Ahmed) qui m'a bien aidé. Il m'a conseillé d'utiliser un programme très pratique : Process Explorer pour killer les process sous Windows (pour les Linuxiens ;) )

3. Une fois que vous êtes sûrs que votre programme tourne correctement, vous pouvez passer à l'étape suivante. Modifiez la ligne de conf dans zabbix_agentd.conf  :

UserParameter=testProcess,cscript.exe /nologo "C:\path\to\testProcess.vbs"

et relancez l'agent sous Windows. Pour le redémarrage de l'agent, il a été défini en tant que service. Donc faîtes un stop/start dans la fenêtre services.

4. Passez ensuite sur l'interface web de zabbix, créez l'item correspondant (key : testProcess, type of information : character), puis créez le trigger correspondant ({hostname:testProcess.last(0)}=0).

5. Si tout s'est bien passé, les données remontent à présent dans l'interface web au niveau des pages : Monitoring =>Latest data et Monitoring=>Triggers

------
Merci Nico pour ce site : codyx

Posté par fatihaelh à 14:50 - zabbix - Commentaires [15] - Permalien [#]

Commentaires

    Besin d'aide sur Zabbix

    Bonjour fatiha
    Je suis intéressé par zabbix, je l'ai installé et je veux monitorer quatres machines (trois linux et une en windows); une imprimante, un scanner et mon modem routeur.
    Sauf que je n'arrive pas à cerner toutes les procedures decritent sur le forum de zabbix. je veux controler ma base de donnée et je ne trouve pas le bon script pour cà.
    je te remercie d'avance et espère une reponse.
    Sam

    Posté par sam, 11 octobre 2010
  • ma réponse

    salut

    Concernant les bases de données, j'utilise des scripts "maison", pour pouvoir monitorer MySQL, Oracle, Sybase. Tu peux ensuite les appeler via zabbix. Il suffit de paramétrer ton script dans le fichier de conf :

    UserParameter=YourKey,/path/To/Your/Script.ksh (sous Unix)
    idem sous Windows avec un appel aux scripts vbscript par exemple.

    Tu ajoutes ensuite l'item, le trigger (avec le niveau d'alerte) et l'action adéquats (envoi de mails, actions correctives) et le tour est joué.

    @+
    Fatiha

    Posté par fatiha, 11 octobre 2010
  • Question?

    Bonjour,

    Ton script m'interesse énormément mais je suis totalement débutant en vbs et je ne comprend pas comment le réutiliser.

    D'après ce que je comprends, il faut juste remplacer "objProcess" par le chemin de l'exe et "Process.Name"par son nom, non?

    Pour moi ça donne ça:

    Function VerifProcess(C:\socat\socat.exe)
    For Each Process In GetObject("winmgmts:").InstancesOf("Win32_process")
    If UCase(socat.exe) = UCase(C:\socat\socat.exe) Then
    VerifProcess = "1"
    Exit Function
    End If
    Next
    VerifProcess = "0"
    End Function
    '---------------
    Wscript.echo VerifProcess("socat.exe")
    Wscript.Quit

    mais quand je fais un clic droit sur le fichier puis "Open with Command prompt" j'ai une fenêtre de commande qui se lance et se referme tout de suite... je n'ai pas l'impression que cela fonctionne.

    étant donné que je ne comprends pas ce que je fais, je dois surement faire une connerie. Merci de ton aide.

    Posté par Garion, 19 août 2011
  • A Garion

    Garion,

    Il ne faut pas modifier la variable objProcess au niveau de cette ligne :
    Function VerifProcess(objProcess)

    Il faut juste modifier l'appel à la fonction :
    Wscript.echo VerifProcess("socat.exe")

    Enfin, il faut indiquer le chemin complet vers le script vbs dans la ligne contenant UserParameter (ex ton script vbs s'appelle socat.vbs):

    UserParameter=testProcess,cscript.exe /nologo "C:\socat\socat.vbs"

    Pour la suite de la procédure tu peux te référer à mon article.

    Bon courage Garion,
    Fatiha

    Posté par Fatiha, 20 août 2011
  • Merci bcp et ton blog est dans mes favoris depuis un petit moment... c'est un vrai trésor pour un gars comme moi .
    Bonne continuation.

    Posté par Garion, 22 août 2011
  • Je te confirme que ça fonctionne nickel. Merci encore.
    Faut-il passer par une solution similaire pour surveiller un processus sur un linux (par l'ajout d'un script donc) ou y a-t-il une clef native Zabbix utilisable (style proc_info...)?

    Posté par Garion, 22 août 2011
  • Génial Garion !

    Cool que ça fonctionne

    Pour Linux, en effet il y a des clés natives, tu les trouveras au niveau de l'interface web dans Configuration -> Items et la clé est : proc.num[tonProcess]

    @+
    Fatiha

    Posté par Fatiha, 22 août 2011
  • Oki. Merci encore Fatiha et bonne journée à toi.

    ++
    Garion

    Posté par Garion, 23 août 2011
  • Je vais encore te déranger Fatiha,

    La clef proc_num sert à superviser en fait le nombre de processus ciblés pour un utilisateur ciblé lui aussi.
    Donc en gros, pour superviser samba par ex sur un serveur il faudrait que je dise à Zabbix de m'alerter quand le nombre de processus smbd pour l'utilisateur root est différent de 2, c'est ça?

    je pensais que c'était plus simple de gestion du type 0/1 (ça tourne ou pas) comme pour la supervision d'un processus windows.

    Ou j'ai loupé quelque chose.

    Merci pour tes lumières.

    ++
    Garion.

    Posté par Garion, 23 août 2011
  • En fait, après un énième test, il semblerait qu'un trigger du style {Supervision Processus smb:proc.num[smbd].last(0)}=0 fonctionne en fait très bien.

    J'ai une alerte lorsque je fais un /etc/init.d/smb stop et elle disparait quand je refais un start.

    Posté par Garion, 23 août 2011
  • A Garion

    Cool, tu deviens un expert zabbix, n'hésites pas si t'as besoin d'infos.

    Posté par Fatiha, 24 août 2011
  • expert est un bien grand mot lol mais je vais bien finir par dompter la bête.
    As-tu déjà procédé à une MAJ de Zabbix?
    Actuellement je suis en 1.8.2 et la dernière stable est à 1.8.6...
    Il y a toujours la peur de tout flinguer sur une MAj (bien que cela ne soit pas une majeur).
    ++

    Posté par Garion, 24 août 2011
  • Upgrade zabbix

    Garion,

    J'ai déjà mis à jour zabbix, de la 1.4 à la 1.6, ça date... L'essentiel est de sauvegarder ta base de données. Pour le reste, tout dépend de la version, comme là tu ne migres pas vers une version majeure : seules les binaires et le frontend seront impactés.

    Je te conseille de lire tout de même les infos d'upgrade mentionnés sur le wiki de zabbix :
    http://www.zabbix.com/documentation/1.8/manual/about/installation_and_upgrade

    Sauvegarde ta base de données, tes fichiers de conf (au cas où), et migres sans problème en suivant les instructions mentionnées dans la release note de la version 1.8.6.

    @+
    Fatiha

    Posté par Fatiha, 24 août 2011
  • Merci pour les infos... je vais regarder ça et voir si je peux faire valider la chose par mes boss en prenant un max de précaution lol.
    Bonw-e à toi .

    ++
    Garion

    Posté par Garion, 26 août 2011
  • Bon week-end à toi aussi Garion. Tiens-moi au courant si tu passes à la nouvelle version et dis-moi quelles sont les nouvelles fonctionnalités

    @+
    Fatiha

    Posté par Fatiha, 27 août 2011

Poster un commentaire