N-PN White-Hat Project
[Widget] Nagios for Awesome - Version imprimable

+- N-PN White-Hat Project (https://dev.n-pn.fr/forum)
+-- Forum : Programmation (https://dev.n-pn.fr/forum/forumdisplay.php?fid=72)
+--- Forum : Langages interprétés (https://dev.n-pn.fr/forum/forumdisplay.php?fid=27)
+--- Sujet : [Widget] Nagios for Awesome (/showthread.php?tid=3706)



[Widget] Nagios for Awesome - Junky - 25-07-2014

Bonjour,

Pour tout sys admin, il est toujours bien d'avoir son nagios à proximité. Voir ce que son parc va bien (ou mal) est le souci numéro un de l'admin (enfin normalement Smile )

Je me suis donc fait un widget nagios pour awesome.

Fonctionnement:

Le widget est codé en python. Il va simplement faire une requête sur le serveur nagios. Il faut donc renseigner dans le widget les champs suivants:

- user
- password
- URL

Pour le user/password rien d'extraordinnaire. Mais pour l'URL, il peut y avoir quelques subtilités.

Lorsque que nous faisons une requête nagios via un navigateur web, nous tapons sur un script cgi (status.cgi). Ce script peut prendre des options ce qui permet d'avoir réellement ce que nous voulons comme retour.

Par exemple il est possible d'avoir comme résultat:

- seulement les WARNING
- seulement les alertes non ACK
- toutes les alertes (ACK/non ACK)
ect...

Je vous laisse prendre connaissance des options possibles ici.

Ensuite toute les 120 sec (configuration dans le rc.lua on verra ca un peu plus loin) le script est lancé et son output est écrit dans un fichier tmp. Puis une fonction lua va chercher le résultat et l'affiche dans votre barre de status.

Alors oui c'est un peu bourrin. Y'a surement mieux a faire. Je le changerai car je désire mettre d'autre features sur le widget. La c'est la version (Alpha)\1{4} Smile

Conseil:

Plutôt que de "forger" la requête à la main pour avoir l'URL voulu, allez sur votre nagios, et copier l'URL des liens dans le menu de gauche. Par exemple si je désire seulement les alertes non ACK, il faut cliquer sur ce lien:

[Image: nagios_service.png]

Ensuite mettre le lien dans la variable URL du widget.

Installation:

Il suffit de télécharger le widget ici et le mettre dans votre dossier awesome. Moi il se trouve dans le "vicious/widget". N'oubliez de vérifier le +x sur le widget.


Configuration:

Il vous faut rajouter le widget dans votre rc.lua. Voici la configuration:

Code LUA :

mynagios = widget({ type = "textbox" })
mynagios.text = "  ?  "
awful.hooks.timer.register(120, function()
        os.execute("/PATH/TO/nagwidget.py > /tmp/tmp_nagioschecker")
        local l = nil
        local f = io.open("/tmp/tmp_nagioschecker")
        l = f:read()
        f:close()
        mynagios.text = l
end)
 


On voit ici que toute les 120 sec, le script va être executé, la sortie est redirigé dans un fichier tmp, le contenu de celui-ci est lu puis affiché.

J'ai mis le code dans la section Wibox. Il vous faut aussi le rajouter dans les widget pour l'affichage. Toujours dans votre rc.lua:

Code LUA :

        mylayoutbox[s],
[...]
    net2widget, separator,
    cpuwidget, separator,
    mynagios,
    s == 1 and mysystray or nil,
[...]
 


Il ne vous reste plus qu'a redémarrer awesome et voici le résultat:

[Image: nagios_widget.png]

Bon ok mon nagios est tout rouge, mais j'ai une maj apache2 à faire, mais au moins on peut trés bien voir que celui-ci fonctionne à merveille. Smile

Conclusion:

Même si nous sommes pas sur un widget de ouf, ca permet d'avoir toujours un oeil sur son Nagios.
Je compte rajouter certaines choses:

- changement de l'affichage si aucun problème
- possibilité de cliquer dessus pour le refresh
- possibilité d'avoir un menu déroulant affichant les machines + services qui posent problèmes
- possibilité de cliquer sur une machine du menu déroulant afin d'ouvrir la page nagios
- et certainement d'autres choses ... Smile

PS: Vous avez les config de mon awesome sur mon git

Edit:
Si aucun souci, voici l'affichage:
[Image: nagios_ok.png]

Junky,


RE: [Widget] Nagios for Awesome - Junky - 27-07-2014

Bonjour,

Je viens de rajouter l'option afin de refresh le widget. Aucune modification sur le script a faire. Tout ce passe dans le rc.lua:

Code LUA :

mynagios:buttons(awful.util.table.join(awful.button({ }, 1, function()
    naughty.notify({text = "Refresh in progress..."})
    nagios()
end)))

 


Bon le code reste assez simple. On déclare un bouton sur le widget, si click gauche (1) on ouvre une notification, on lance la fonction nagios et on quitte.

J'ai aussi exporté la fonction nagios hors du block 'wibox'. Disons que ca fait plus propre.

Les conf sont tjs dispo sur le git.


RE: [Widget] Nagios for Awesome - Junky - 27-07-2014

Rajout de l'option afin d'ouvrir la page des services dans firefox.

Il suffit de faire un click droit sur le widget. Celui-ci ouvre un menu:

[Image: go_service.png]

Clicker su "Go service" et votre firefox ouvre la page en question.

Configuration nécessaire:

modification dans la section wibox:

Code LUA :

-- création du menu mynagiosmenu
mynagiosmenu = awful.menu.new({ items = { { "Go Service", browser .. "URL DE VOTRE NAGIOS" },
                                        { "open terminal", terminal }
                                        }})

-- Si clic gauche on refresh, si clic droit on ouvre le menu
mynagios:buttons(awful.util.table.join(awful.button({ }, 1, function ()  
                naughty.notify({text = "Refresh in progress..."})
                nagios(1)
                end),
                awful.button({ }, 3, function ()
                nagios()
        end)))

 


Modification de la fonction nagios():

Code LUA :

-- function for nagios widget.
function nagios ( c )
        if c == 1 then
                os.execute("/home/silentd/.config/awesome/vicious/widgets/nagwidget.py > /tmp/nagioschecker")
                local l = nil
                local f = io.open("/tmp/nagioschecker")
                l = f:read()
                f:close()
                mynagios.text = l
        else
                mynagiosmenu:toggle()
        end
end
 


Junky,


RE: [Widget] Nagios for Awesome - thxer - 28-07-2014

Excellent , j'approuve, et merci


RE: [Widget] Nagios for Awesome - Junky - 28-07-2014

Héhé merci Wink

J'ai oublié de rajouter une chose. Il faut déclarer dans ton rc.lua ton browser:

Code LUA :

-- firefox
browser="firefox"
-- uzbl
browser="uzbl-browser"
-- ect...
 


En tout cas si tu t'en sers et que tu as des soucis, n'hésites pas demander ici ou IRC. Smile

Junky,


RE: [Widget] Nagios for Awesome - thxer - 30-07-2014

Yep j'en aurai sûrement l'usage prochainement.
Mais l'idée sera de récup les infos à travers le wan via ssh


RE: [Widget] Nagios for Awesome - Junky - 30-07-2014

Bonjour,

A ce moment la si tu passe par ssh, tu pourra aller taper directement dans le status.dat de nagios. b0th a justement fait un p'tit script sur le status.dat.


De mon côté je suis en train de travailler sur l'affichage des erreurs dans un menu. Je passe par BeautifulSoup pour parser ma page html et trier le résultat.
Le tri affichage en lui même est pratiquement fini, now il me faut l'implémenter dans awesome.

Junky