Forum Linux.debian/ubuntu Petit partage - Conky pour logs apache2, DNSChef, OpenVPN, HaProxy

Posté par  . Licence CC By‑SA.
2
19
sept.
2018

Source de l'article (workflow) : Conky - Display logs files

Après avoir parcourus les tréfonds du Regex, avoir emboîté les briques du puzzle ancestrale du grand dieu Sed; notre héro au grand Shell vient nous partager ses créations infernales de la semaine.
D'autres skins à venir, plus que probablement.
Bon amusement !
😉

Les Conkys

Conky pour afficher les Logs d'Apache2

Screenshot_2018-09-19__conky_logs_apache2-Black

Screenshot_2018-09-19__conky_logs_apache2-Beige

Screenshot_2018-09-19__conky_logs_apache2-White

Source Code : https://gitlab.com/voxdemonix/conky/tree/master/conky_logs_apache2
Ce conky affiche les 15 dernières lignes d'un fichier log apache2 (par défaut /tmp/remote_logs/access.log) avec colorisation des différents éléments.
Il affiche un petit /!\ lorsqu'un code http d'erreur est repéré. Le conky est aussi capable de détecter certains bot voir d'en reconnaître (entre autre actuellement Google, Yahoo et Qwant *1)

*1 j'ai voulu ajouter le bot de linuxfr, mais j'attends que son user agent soit bien établi/pérenne.

Conky pour afficher les Logs de DNSChef

Source Code : https://gitlab.com/voxdemonix/conky/tree/master/conky_logs_dnschef
Ce conky affiche les 15 dernières lignes d'un fichier log de DNSChef (par défaut /tmp/remote_logs/dnschef.log) avec colorisation des différents éléments.
Ce conky est beaucoup plus simple que son frangin ci-haut, dnschef ne transmettant en effet pas énormément d'informations dans ses logs.
Petit rappel : par défaut dnschef ne log rien, il faut ajouter l'option à la commande de lancement pour qu'il log les infos. N'oubliez surtout pas de configurer logrotate car ses logs grossissent très très vite.

Screenshot_2018-09-17_conky-display_remote_DNSChef_logs

Screenshot_2018-09-19__conky_logs_dnschef-semi-Black

Screenshot_2018-09-19__conky_logs_dnschef-Orange

Screenshot_2018-09-19__conky_logs_dnschef-Skeleton

Conky pour afficher les Logs de HaProxy

Source Code : https://gitlab.com/voxdemonix/conky/tree/master/conky_logs_haproxy

Screenshot_2018-10-07_Conky-Logs-HaProxy-Beige

Conky pour afficher les Logs de OpenVPN

Source Code : https://gitlab.com/voxdemonix/conky/tree/master/conky_logs_openvpn

Exporter vos derniers logs depuis votre serveur :

Sur votre serveur où sont situés vos logs, générez des clés SSH.

( ssh-keygen -t ed25519 -o -a 666 ; ssh-keygen -t rsa -b 4096 -o -a 666 )

Exportez votre clé publique depuis votre serveur où sont vos logs vers votre ordi perso.

ssh-copy-id -i ~/.ssh/id_ed25519.pub your_desktop_user@your_desktop_hostname_in_vpn

Téléchargez ce script, rangez le où vous souhaitez et accordez dessus la permission d’exécution.

cd /opt/scripts
wget https://gitlab.com/voxdemonix/divers-script/raw/master/exportLog_scp.bash
chmod +x ./exportLog_scp.bash

Éditez cron.

sudo crontab -e

Choisissez votre taux de rafraîchissement favoris.
Note : le script copie les données dans un fichier dans /tmp/ avant de l'envoyer au desktop. Je vous conseil de passer par un dossier en mémoire ram (par exemple).

        #  each minute
* * * * *       /opt/scripts/exportLog_scp.bash myOwnDesktop.vpn    your_desktop_user   /var/log/dnschef/   dnschef.log

       # each 15s ( use only on ram storage )
* * * * *   /opt/scripts/exportLog_scp.bash myOwnDesktop.vpn    your_desktop_user   /var/log/dnschef/   dnschef.log
* * * * *   ( sleep 15 ; /opt/scripts/exportLog_scp.bash    myOwnDesktop.vpn    your_desktop_user   /var/log/dnschef/   dnschef.log )
* * * * *   ( sleep 30 ; /opt/scripts/exportLog_scp.bash    myOwnDesktop.vpn    your_desktop_user   /var/log/dnschef/   dnschef.log )
* * * * *   ( sleep 45 ; /opt/scripts/exportLog_scp.bash    myOwnDesktop.vpn    your_desktop_user   /var/log/dnschef/   dnschef.log )

        # each 30s ( use only on ram storage )
* * * * *       ( /opt/scripts/exportLog_scp.bash   myOwnDesktop.vpn    your_desktop_user   /var/log/dnschef/   dnschef.log ; sleep 30 ; /opt/scripts/exportLog_scp.bash    myOwnDesktop.vpn    your_desktop_user   /var/log/dnschef/   dnschef.log )

        # each hour
@hourly       ( /opt/scripts/exportLog_scp.bash myOwnDesktop.vpn    your_desktop_user   /var/log/dnschef/   dnschef.log )

N'hésitez pas à apporter votre pierre à l'édifice voir aussi partager le rendu que ça donne sur vos propres bureaux. 🙂 Si vous souhaitez que le conky colore quelque chose en plus, c'est le bon moment pour demander :)

  • # Conky et lisibilité du code

    Posté par  . Évalué à 0.

    Auriez-vous une petite astuce pour rendre ce genre de ligne plus lisible?

    ${execpi 15 tail -n 15 /tmp/remote_logs/access.log | sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/${color darkblue}&/' | sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/&$color/' | sed 's/GET[[:space:]]\|POST[[:space:]]/${color darkgreen}&/' | sed 's/GET[[:space:]]\|POST[[:space:]]/&$color/' | sed 's/- -.*[[:space:]]\(+\|-\)0[0-9]\{1\}00]//g' | sed 's/\"-\"/${color darkgreen}&/' | sed 's/\"-\"/&$color/' | sed '/bot\//s/^/Bot /' | sed '/ Googlebot\//s/^/${color darkblue}G$color${color red}O$color${color yellow}O$color${color darkblue}G$color${color darkgreen}L$color${color red}E$color /' | sed '/ Yahoo\//s/^/${color #7b0099}Yahoo$color /' | sed '/ Qwantify\//s/^/${color black}Q$color${color darkgreen}want$color /' | sed '/\( 4[0-9]\{2\} \)\|\( 5[0-9]\{2\} \)[0-9]\{1,\}[[:space:]]/s/^/${color red} \/\!\\ $color /' | sed 's/\(.*\ [0-9]\{3\} [0-9]\{1,\} \).*/\1/g' | sed 's/[[:space:]][0-9]\{1,\}[[:space:]]*$//' | sed 's/\( 1[0-9]\{2\}\)\|\( 2[0-9]\{2\}\)/${color darkgreen}&/' | sed 's/\( 1[0-9]\{2\} \)\|\( 2[0-9]\{2\} \)*$/&$color/' | sed 's/\( 3[0-9]\{2\}\)/${color darkrose}&/' | sed 's/\( 3[0-9]\{2\} \)/&$color/' | sed 's/\( 4[0-9]\{2\}\)\|\( 5[0-9]\{2\}\)/${color red}&/' | sed 's/\( 4[0-9]\{2\} \)\|\( 5[0-9]\{2\} \)/&$color/' | sed '/\( 1[0-9]\{2\}\)\|\( 2[0-9]\{2\}\)\|\( 3[0-9]\{2\}\)/s/^/${goto 28} /' }
    

    On peut éventuellement utiliser \ à la fin d'une ligne pour insérer un retour chariot, mais pas indiquer des commentaires dedans avec #.
    Je sais qu'on peut passer par un script externe se qui serait plus simple pour la lecture, mais le but est de n'insérer aucune dépendance externe.

    • [^] # Re: Conky et lisibilité du code

      Posté par  . Évalué à 1.

      Si quelqu'un a une idée ça m'intéresserait fortement car les commandes ne font que s’agrandir :)

      • [^] # Re: Conky et lisibilité du code

        Posté par  . Évalué à 4.

        tu n'es pas obligé de piper tes sed dans des sed. Tu peux traiter des cibles différentes avec un seule invocation de sed. Exemple:

        $ echo '1234\n5678' | sed -e '/1/{s/1/2/}
        > /5/{s/5/6/}'
        2234\n6678

        Mais il faut des retours à la ligne pour séparer les différentes parties du script. Du coup, je te conseille de regrouper tous tes traitements sed dans fichier de script sed, que tu peux invoquer avec l'option -f de sed.

        • [^] # Re: Conky et lisibilité du code

          Posté par  . Évalué à 1.

          Tu peux traiter des cibles différentes avec un seule invocation de sed. Mais il faut des retours à la ligne pour séparer les différentes parties du script.

          Merci pour l'astuce, c'est bon à savoir.

          Du coup, je te conseille de regrouper tous tes traitements sed dans fichier de script sed, que tu peux invoquer avec l'option -f de sed.

          J'essaye d'éviter toute dépendance externe (limiter le conky a son fichier conkyrc plus au pire l'image). Ceci afin d'éviter aux utilisateurs de devoir aller changer les PATH lors de l'installation. (note que je n'ai pas encore testé le fonctionnement des liens relatifs avec conky)

          • [^] # Re: Conky et lisibilité du code

            Posté par  . Évalué à 3. Dernière modification le 25 septembre 2018 à 15:07.

            J'essaye d'éviter toute dépendance externe (limiter le conky a son fichier conkyrc plus au pire l'image). Ceci afin d'éviter aux utilisateurs de devoir aller changer les PATH lors de l'installation.

            admettons. L'écriture du script dans la ligne de commande avec des retours à la ligne reste possible (et plus lisible qu'une ligne de 10000 caractères :) ). Si ton éditeur de texte préféré fait de la coloration syntaxique pour sed, tu peux utiliser un fichier de script pour le dév, et recopier ton script dans la ligne de commande pour la version que tu distribues.

            • [^] # Re: Conky et lisibilité du code

              Posté par  . Évalué à 1.

              tu peux utiliser un fichier de script pour le dév, et recopier ton script dans la ligne de commande pour la version que tu distribues.

              Good idea. Je peux caser ca aussi dans un readme dans chaque dossier de conky :)

        • [^] # Re: Conky et lisibilité du code

          Posté par  (site web personnel) . Évalué à 2. Dernière modification le 08 octobre 2018 à 14:46.

          Mais il faut des retours à la ligne pour séparer les différentes parties du script.

          echo "en effet" | sed -e "s/en/absolument/;s/effet/pas/; s/^/ce n'est /; s/$/ necessaire/"

          XD

          • [^] # Re: Conky et lisibilité du code

            Posté par  . Évalué à 1.

            Pas mal, hier je cherchais justement comment faire ce genre de regex :D

          • [^] # Re: Conky et lisibilité du code

            Posté par  . Évalué à 2.

            ah oui, tiens. merci pour la correction. La lisibilité est un point tellement important pour moi que les retours à la ligne me paraissent nécessaires, même s'ils ne le sont techniquement pas.

  • # conky & retour à la ligne

    Posté par  . Évalué à 1. Dernière modification le 29 septembre 2018 à 15:12.

    Sauriez-vous si on peut forcer le retour à la ligne lorsqu'une ligne dynamique est plus grande que le container conky qui l'héberge ?

  • # update

    Posté par  . Évalué à 1. Dernière modification le 07 octobre 2018 à 21:19.

    Ptit message pour signaler la mise à jours avec l'ajout de deux conkys. Un pour les logs de HaProxy et un pour les logs d'DpenVPN :)
    Quelques skins ont été ajouté et un conky basique permettant d'être facilement ré-utilisé peut être trouvé ici-même.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.