Thanks to Kevin, a friend from France, I recently discovered "hetrixtools" (link attached) which lets you monitor one or more hosts for free (there are limitations but they are not strict): without installing any software on your machines, you can do #PING, #Website, #SMTP and #Heartbeat checks over your hosts; then if you install their agent (it's really straightforward but #CPU usage was an issue for my single-core VPS) you can get a lot more, from services to ports monitoring, to disk health checks.

    So, after I saw that installing the agent was not feasible for me, I decided to try a local run monitoring service and I choose #Monit, which is well documented and all in all quite easy to set up once you get the way it works.

    I've got #notifications directly to my #INBOX, via my own #email server and here you can see what I'm monitoring so far.. https://i.imgur.com/uqDceAa.jpeg Each of those items is click-able and gives a lot of detailed info. I cannot see any difference in #CPU usage on my host and am quite satisfied by the results.

    • chevron_right

      BA.2.86 shows just how risky slacking off on COVID monitoring is

      news.movim.eu / ArsTechnica · Monday, 21 August, 2023 - 20:17

    Transmission electron micrograph of a SARS-CoV-2 virus particle isolated from a patient sample and cultivated in cell culture.

    Enlarge / Transmission electron micrograph of a SARS-CoV-2 virus particle isolated from a patient sample and cultivated in cell culture. (credit: Getty | BSIP )

    A remarkably mutated coronavirus variant classified as BA.2.86 seized scientists' attention last week as it popped up in four countries, including the US.

    So far, the overall risk posed by the new subvariant is unclear. It's possible it could lead to a new wave of infection; it's also possible (perhaps most likely) it could fizzle out completely. Scientists simply don't have enough information to know. But, what is very clear is that the current precipitous decline in coronavirus variant monitoring is extremely risky.

    In a single week, BA.2.86 was detected in four different countries, but there are only six genetic sequences of the variant overall —three from Denmark, and one each from Israel, the UK, and the US (Michigan). The six detections suggest established international distribution and swift spread. It's likely that more cases will be identified. But, with such scant data, little else can be said of the variant's transmission or possible distribution.

    Read 13 remaining paragraphs | Comments

    • chevron_right

      Comment créer une belle page de statut pour vos applications avec Statping

      news.movim.eu / Korben · Thursday, 19 January, 2023 - 08:00 · 1 minute

    Qui n’a jamais rêvé d’avoir une belle page de monitoring sur son serveur pour suivre l’état de santé de ses applications ?

    Statping est un outil simple d’utilisation qui permet de créer ce genre de page de statut pour toutes vos applications et vos sites web. Ce script va automatiquement récupérer les données de vos app et en faire une belle page de statut.

    Tout est personnalisable donc vous pouvez rendre ça vraiment joli ou en tout cas, adapté à vos besoins. Ainsi, si votre serveur tombe en panne, votre page de statut devrait toujours être en ligne pour informer vos utilisateurs de l’indisponibilité. Veuillez quand même à bien héberger Statping sur un autre serveur que celui de vos applications ^^.

    Pour le lancer avec Docker, c’est hyper simple :

    docker run -it -p 8080:8080 statping/statping

    Il peut aussi se lancer avec le Docker Compose fourni (j’adore Docker Compose ^^). Heureusement pour vous, Statping est une application très légère, dispo pour Linux, Mac et Windows qui peut même tourner sur un simple Raspberry Pi. Ce serait dommage de s’en priver !

    Une application mobile est également disponible sur l’App Store et Google Play gratuitement. Elle vous permettra de consulter l’était de vos services et évidemment de recevoir des notifications lorsque l’un d’entre eux est hors ligne. Vous pouvez même envoyer directement des emails ou encore des messages sur Slack grâce à ses webhook.

    En résumé, Statping est un outil vraiment utile pour les développeurs et les administrateurs systèmes car il vous permettra enfin de créer une page de statut pour vos applications et sites web, très rapidement, avec toutes les fonctionnalités et la personnalisation dont vous avez toujours rêvé.

    Plus d’infos ici.

    • chevron_right

      Why you need network monitoring?

      pubsub.slavino.sk / icinga · Wednesday, 19 January, 2022 - 10:00 edit

    Network monitoring is a continious analysis of a network to detect and correct any performance issues. Network monitoring involves collecting network statistics to determine the quality of services offered by the network. With tools like Icinga, it’s possible to monitor hardware and software in your network. Espacially in the pandemic when many employees work from […]

    The post Why you need network monitoring? appeared first on Icinga .


    Značky: #network, #General, #monitoring, #Network, #How-tos, #Icinga

    • chevron_right

      Monitoring the Monitor: How to keep a watch on Icinga 2

      pubsub.slavino.sk / icinga · Friday, 21 May, 2021 - 08:44 edit

    The question is (probably) older than monitoring itself: Who monitors the monitor? While Icinga comes with countless options to monitor a wide range of devices and applications, at some point you will ask yourself how you can observe if Icinga itself is having errors.   The Basics To start with “monitoring the monitor” it is […]

    The post Monitoring the Monitor: How to keep a watch on Icinga 2 appeared first on Icinga .


    Značky: #monitoring, #Network, #How-tos, #MonitorTheMonitor

    Original URL: https://datalandscape.eu/sites/default/files/report/EDM_D2.5_Second_Report_on_Policy_Conclusions_final_13.06.2019.pdf

    • chevron_right

      Using the Icinga Web API

      pubsub.slavino.sk / icinga · Friday, 12 March, 2021 - 10:54 edit

    Unfortunately, there is little to no documentation for using the Icinga Web API to perform monitoring actions such as scheduling downtimes. But it’s a simple thing and I’ll give you a quick example of how to do it. Using the Icinga Web API instead of the Icinga API gives you the advantages of the permission […]

    The post Using the Icinga Web API appeared first on Icinga .


    Značky: #API, #monitoring, #Network, #How-tos, #Development

    • At chevron_right

      Du dev et du monitoring : YaPLog

      motius · pubsub.gugod.fr / atomtest · Monday, 1 August, 2016 - 22:00 · 7 minutes

    Bonjour à tous ! Aujourd'hui on va parler boulot, mais n'ayez pas peur, on parle du mien. Petite balade réseau et dev. Ce que j'aime le plus avec mon stage courant, c'est les défis. J'ai 6 semaines pour réaliser un prototype et sa documentation, et je peux vous dire que c'est serré. À près de trois ...

    Bonjour à tous !

    Aujourd'hui on va parler boulot, mais n'ayez pas peur, on parle du mien. Petite balade réseau et dev.

    Ce que j'aime le plus avec mon stage courant, c'est les défis. J'ai 6 semaines pour réaliser un prototype et sa documentation, et je peux vous dire que c'est serré. À près de trois quarts du projet, faisons un point sur son avancement, ce qu'il reste à faire, les technos, etc.

    Le cahier des charges

    Le monitoring réseau c'est tout sauf un sujet original. Hyper intéressant, sa mise en pratique évolue au fur et à mesure que les outils, les pratiques, et les protocoles évoluent.

    Vous vous demandez sûrement pourquoi je parle de développement dans ce cas. Il y a certes de nombreux programmes permettant de faire pas mal de choses. Voici pourquoi.

    • La meilleure raison : je n'ai pas accès (question de contrat avec l'opérateur réseau) aux routeurs, et il faudrait que j'aie la main sur une centaine de routeurs ;
    • la deuxième meilleure raison : on m'a demandé une tâche spécifique (du reporting quotidien, entre autres). Je ne dis pas que ce n'est pas possible avec un Nagios-Cacti ou un Munin, mais je n'aurais pas commencé ce qu'on m'a demandé (voir ce qui suit) dans le temps imparti ;
    • une raison pratique : on ne change pas la configuration d'une centaine de routeurs à travers le monde en 40 jours. C'est à peine suffisant pour traverser un désert.

    Que veut-on savoir ? La question initiale est "quand est-ce que ma ligne est saturée" ce qui est déjà visible sur les logs du FAI (Nagios-Cacti, exporté en petites images JPG) mais n'est pas suffisant pour plusieurs raisons :

    • on n'a pas de système d'alerte (facile à mettre en œuvre) ;
    • on n'a pas de données exploitables plus avant (l'image JPG, c'est pas beaucoup) ;

    On veut donc savoir quand est-ce que la ligne est saturée. C'est-à-dire, a priori, quand est-ce que la ligne atteint sont débit maximal.

    Le but suivant est de déterminer si une saturation est gênante. Cela comprend plusieurs facteurs :

    • l'heure : une saturation entre 2h et 4h du mat' parce qu'on fait des backup, ça ne gêne personne (ça pourrait, mais pas dans ce cas) ;
    • une saturation d'une seconde dans la journée n'est pas grave. De même, 250 saturations quasi-instantanées, réparties de 8h à 20h ne gênent pas le travail ;

    Une fois qu'on a déterminé si une saturation est gênante, on veut savoir qui elle gêne et pourquoi, afin de voir si on peut faire quelque chose pour améliorer l'utilisation des ressources.

    • Par exemple, lorsqu'un site est saturé, cela gêne-t-il 1 ou 50 personnes ? Dans le premier cas, la personne est peut-être trop gourmande en ressources, dans le second, le lien est peut-être mal dimensionné.
    • Certains processus peuvent être automatisés la nuit, certaines pratiques changées : backup du travail pendant la pause de midi et la nuit, passer de FTP à rsync pour les backup, ou au moins un système incrémental plutôt que full

    Implémentation

    Comme je sens que vous êtes des warriors,

    cyclops_warrior_concept_by_masterfulmind-d4vi7mx

    Un warrior, probablement.

    je vous propose de rentrer dans le vif du sujet avec les détails techniques.

    Unzip

    Je pars avec une archive zip, gentiment déposée par mon FAI, dans laquelle il y a des logs au format nfcapd, défini par Cisco.

    Nfdump

    Nfcapd est un fichier binaire, pas très comestible pour l'œil humain. J'ai donc trouvé nfdump, un programme qui permet de transformer les logs binaires en texte ASCII. ça ressemble à peu près à ça :

    2016-09-21 21:47:42.360     0.000 TCP         192.168.5.3:445   ->    192.168.5.249:56011        1       52     1

    csvify

    C'est mieux, mais c'est toujours pas optimal. Il y a notamment trois problèmes :

    • la taille du fichier ASCII par rapport au binaire nfcapd est importante, environ 9.5 fois plus ;
    • le texte ASCII est très irrégulier, le nombre d'espaces est très variable ;
    • sont inutiles :
      • la flèche ;
      • le protocole aussi dans la majorité des cas (si on fait des calculs de poids en octets) ;
      • les ports, sauf éventuellement dans le cas d'un téléchargement, le port source pour déterminer le type de trafic (HTTP : 80, POP/IMAP, IRC : 6667/6697...) ;
      • le "1" à la toute fin, qui désigne le nombre de flow, toujours à 1 dans mon cas, vu les options passées à nfdump.

    J'ai donc créé un préparser en C (il s'agit en fait d'une spécification flex, puis flex génère le code C correspondant, à l'aide d'automates) (il y en a deux, l'un d'entre eux affiche des couleurs, utile pour visualiser, interdit pour l'utilisation en production, parce qu'il génère bien trop de caractères d'échappement).

    En moyenne, mon préparser sort un fichier au format CSV qui fait 70% de la taille du fichier d'entrée, et est beaucoup plus normalisé. Il ne supprime cependant pas beaucoup d'informations (la flèche seulement).

    Parse/Somme et plus si affinités

    Maintenant qu'on s'est facilité la tâche, il ne reste plus qu'à analyser le tout.

    C'est le but du programme C++ suivant, qui va itérer sur les entrées du CSV qu'on a produit, et ranger les paquets aux bons endroits.

    Enfin, en théorie. Parce qu'on se retrouve devant quelques petits problèmes :

    • Il y a des paquets qui on une durée de passage au travers du réseau nulle, et pour faire des graphs, c'est pas top. Il faut donc gérer cela.
      • On attribue une valeur faible à la durée de transmission.
      • On effectuera une moyenne (moyenne simple ou mieux, implémentation de l'algorithme SMA (ici en fr) pour lisser la courbe obtenue.
    • Même si le C/C++ est rapide, la partie lecture du fichier sur disque est très rapide, la partie traitement est lente, la partie écriture des résultats sur disque est rapide.
      • On adopte donc l'architecture suivante pour le programme C++ :

    C++ n-multithread

    Architecture du programme C++

    Le thread lecteur en haut lit depuis le disque à gauche, range les éléments dans la std::queue fileQ protégée par un mutex (fileQmutex, je suis d'une originalité à toute épreuve), tandis que les n threads workers vont travailler à générer la donnée, puis vont passer leur résultat à la liste de résultats resQD. Finalement le thread écrivain va réunir la liste de résultats, et l'écrire sur disque (à droite).

    Comme vous le voyez, beaucoup de choses ont été faites, beaucoup de choix, et j'en passe de très nombreux (j'en mettrai en PS), et il reste beaucoup à accomplir, notamment :

    • la doc : pour la contiuation du projet ;
    • le manuel d'uilisation pour l'exploitation ;
    • un How-to pour installer/améliorer le bidule ;
    • utiliser la classe Traffic() du programme C++ pour effectivement ranger les paquets dans des types de Traffic (par port pour le protocole, par IP source pour les utilisateurs les plus gourmands, par IP destination pour les serveurs les plus consultés/les plus consommateurs de ressource, et pour déterminer combien d'utilisateurs sont effectivement gênés lors d'une saturation).

    Des graphs. For free.

    Une fois que l'on a écrit le CSV, il ne reste qu'à faire le graph. le programme gnuplot peut faire ça très bien.

    Un chef d'orchestre

    Tout cela est opéré depuis un script bash.

    Voilà, j'espère que ça vous a plu, si ça vous amuse, le projet est libre, disponible ici. Comme d'habitude n'hésitez pas à commenter et à bientôt !

     

    Motius

    PS : j'ai appris plein de choses, mais qui sont de l'ordre du détail pour ce projet, alors je vais en lister quelques unes ici :

    • mes CPU aiment travailler de manière symétrique. quand je mets n workers, je gagne plus en pourcentage de vitesse en passant d'un nombre impair à un nombre pair. Les chiffres :
      • de 1 à 2 CPU : 3.37 fois plus rapide (le programme n-multithread est plus lent que ne l'était le programme monothread équivalent si l'on ne met qu'un seul thread worker, n=1) ;
      • de 2 à 3 CPU : 1.12 fois ;
      • de 3 à 4 CPU : 1.67 fois ;
    • les regex sont assez lentes, il y a potentiellement une bonne optimisation possible en bidouillant des C-strings au lieu des std::string du C++ (le pré-parser C est beaucoup beaucoup plus rapide que le programme C++, aussi parce que son travail ne consiste qu'en des substitutions/suppressions), mais le temps de développement serait plus long, et le risque d'overflow/segfault possible.
    • Ha chevron_right

      Du dev et du monitoring : YaPLog

      motius · pubsub.gugod.fr / hashtagueule · Monday, 1 August, 2016 - 22:00 · 7 minutes

    Bonjour à tous ! Aujourd'hui on va parler boulot, mais n'ayez pas peur, on parle du mien. Petite balade réseau et dev. Ce que j'aime le plus avec mon stage courant, c'est les défis. J'ai 6 semaines pour réaliser un prototype et sa documentation, et je peux vous dire que c'est serré. À près de trois ...

    Bonjour à tous !

    Aujourd'hui on va parler boulot, mais n'ayez pas peur, on parle du mien. Petite balade réseau et dev.

    Ce que j'aime le plus avec mon stage courant, c'est les défis. J'ai 6 semaines pour réaliser un prototype et sa documentation, et je peux vous dire que c'est serré. À près de trois quarts du projet, faisons un point sur son avancement, ce qu'il reste à faire, les technos, etc.

    Le cahier des charges

    Le monitoring réseau c'est tout sauf un sujet original. Hyper intéressant, sa mise en pratique évolue au fur et à mesure que les outils, les pratiques, et les protocoles évoluent.

    Vous vous demandez sûrement pourquoi je parle de développement dans ce cas. Il y a certes de nombreux programmes permettant de faire pas mal de choses. Voici pourquoi.

    • La meilleure raison : je n'ai pas accès (question de contrat avec l'opérateur réseau) aux routeurs, et il faudrait que j'aie la main sur une centaine de routeurs ;
    • la deuxième meilleure raison : on m'a demandé une tâche spécifique (du reporting quotidien, entre autres). Je ne dis pas que ce n'est pas possible avec un Nagios-Cacti ou un Munin, mais je n'aurais pas commencé ce qu'on m'a demandé (voir ce qui suit) dans le temps imparti ;
    • une raison pratique : on ne change pas la configuration d'une centaine de routeurs à travers le monde en 40 jours. C'est à peine suffisant pour traverser un désert.

    Que veut-on savoir ? La question initiale est "quand est-ce que ma ligne est saturée" ce qui est déjà visible sur les logs du FAI (Nagios-Cacti, exporté en petites images JPG) mais n'est pas suffisant pour plusieurs raisons :

    • on n'a pas de système d'alerte (facile à mettre en œuvre) ;
    • on n'a pas de données exploitables plus avant (l'image JPG, c'est pas beaucoup) ;

    On veut donc savoir quand est-ce que la ligne est saturée. C'est-à-dire, a priori, quand est-ce que la ligne atteint sont débit maximal.

    Le but suivant est de déterminer si une saturation est gênante. Cela comprend plusieurs facteurs :

    • l'heure : une saturation entre 2h et 4h du mat' parce qu'on fait des backup, ça ne gêne personne (ça pourrait, mais pas dans ce cas) ;
    • une saturation d'une seconde dans la journée n'est pas grave. De même, 250 saturations quasi-instantanées, réparties de 8h à 20h ne gênent pas le travail ;

    Une fois qu'on a déterminé si une saturation est gênante, on veut savoir qui elle gêne et pourquoi, afin de voir si on peut faire quelque chose pour améliorer l'utilisation des ressources.

    • Par exemple, lorsqu'un site est saturé, cela gêne-t-il 1 ou 50 personnes ? Dans le premier cas, la personne est peut-être trop gourmande en ressources, dans le second, le lien est peut-être mal dimensionné.
    • Certains processus peuvent être automatisés la nuit, certaines pratiques changées : backup du travail pendant la pause de midi et la nuit, passer de FTP à rsync pour les backup, ou au moins un système incrémental plutôt que full

    Implémentation

    Comme je sens que vous êtes des warriors,

    cyclops_warrior_concept_by_masterfulmind-d4vi7mx

    Un warrior, probablement.

    je vous propose de rentrer dans le vif du sujet avec les détails techniques.

    Unzip

    Je pars avec une archive zip, gentiment déposée par mon FAI, dans laquelle il y a des logs au format nfcapd, défini par Cisco.

    Nfdump

    Nfcapd est un fichier binaire, pas très comestible pour l'œil humain. J'ai donc trouvé nfdump, un programme qui permet de transformer les logs binaires en texte ASCII. ça ressemble à peu près à ça :

    2016-09-21 21:47:42.360     0.000 TCP         192.168.5.3:445   ->    192.168.5.249:56011        1       52     1

    csvify

    C'est mieux, mais c'est toujours pas optimal. Il y a notamment trois problèmes :

    • la taille du fichier ASCII par rapport au binaire nfcapd est importante, environ 9.5 fois plus ;
    • le texte ASCII est très irrégulier, le nombre d'espaces est très variable ;
    • sont inutiles :
      • la flèche ;
      • le protocole aussi dans la majorité des cas (si on fait des calculs de poids en octets) ;
      • les ports, sauf éventuellement dans le cas d'un téléchargement, le port source pour déterminer le type de trafic (HTTP : 80, POP/IMAP, IRC : 6667/6697...) ;
      • le "1" à la toute fin, qui désigne le nombre de flow, toujours à 1 dans mon cas, vu les options passées à nfdump.

    J'ai donc créé un préparser en C (il s'agit en fait d'une spécification flex, puis flex génère le code C correspondant, à l'aide d'automates) (il y en a deux, l'un d'entre eux affiche des couleurs, utile pour visualiser, interdit pour l'utilisation en production, parce qu'il génère bien trop de caractères d'échappement).

    En moyenne, mon préparser sort un fichier au format CSV qui fait 70% de la taille du fichier d'entrée, et est beaucoup plus normalisé. Il ne supprime cependant pas beaucoup d'informations (la flèche seulement).

    Parse/Somme et plus si affinités

    Maintenant qu'on s'est facilité la tâche, il ne reste plus qu'à analyser le tout.

    C'est le but du programme C++ suivant, qui va itérer sur les entrées du CSV qu'on a produit, et ranger les paquets aux bons endroits.

    Enfin, en théorie. Parce qu'on se retrouve devant quelques petits problèmes :

    • Il y a des paquets qui on une durée de passage au travers du réseau nulle, et pour faire des graphs, c'est pas top. Il faut donc gérer cela.
      • On attribue une valeur faible à la durée de transmission.
      • On effectuera une moyenne (moyenne simple ou mieux, implémentation de l'algorithme SMA (ici en fr) pour lisser la courbe obtenue.
    • Même si le C/C++ est rapide, la partie lecture du fichier sur disque est très rapide, la partie traitement est lente, la partie écriture des résultats sur disque est rapide.
      • On adopte donc l'architecture suivante pour le programme C++ :

    C++ n-multithread

    Architecture du programme C++

    Le thread lecteur en haut lit depuis le disque à gauche, range les éléments dans la std::queue fileQ protégée par un mutex (fileQmutex, je suis d'une originalité à toute épreuve), tandis que les n threads workers vont travailler à générer la donnée, puis vont passer leur résultat à la liste de résultats resQD. Finalement le thread écrivain va réunir la liste de résultats, et l'écrire sur disque (à droite).

    Comme vous le voyez, beaucoup de choses ont été faites, beaucoup de choix, et j'en passe de très nombreux (j'en mettrai en PS), et il reste beaucoup à accomplir, notamment :

    • la doc : pour la contiuation du projet ;
    • le manuel d'uilisation pour l'exploitation ;
    • un How-to pour installer/améliorer le bidule ;
    • utiliser la classe Traffic() du programme C++ pour effectivement ranger les paquets dans des types de Traffic (par port pour le protocole, par IP source pour les utilisateurs les plus gourmands, par IP destination pour les serveurs les plus consultés/les plus consommateurs de ressource, et pour déterminer combien d'utilisateurs sont effectivement gênés lors d'une saturation).

    Des graphs. For free.

    Une fois que l'on a écrit le CSV, il ne reste qu'à faire le graph. le programme gnuplot peut faire ça très bien.

    Un chef d'orchestre

    Tout cela est opéré depuis un script bash.

    Voilà, j'espère que ça vous a plu, si ça vous amuse, le projet est libre, disponible ici. Comme d'habitude n'hésitez pas à commenter et à bientôt !

     

    Motius

    PS : j'ai appris plein de choses, mais qui sont de l'ordre du détail pour ce projet, alors je vais en lister quelques unes ici :

    • mes CPU aiment travailler de manière symétrique. quand je mets n workers, je gagne plus en pourcentage de vitesse en passant d'un nombre impair à un nombre pair. Les chiffres :
      • de 1 à 2 CPU : 3.37 fois plus rapide (le programme n-multithread est plus lent que ne l'était le programme monothread équivalent si l'on ne met qu'un seul thread worker, n=1) ;
      • de 2 à 3 CPU : 1.12 fois ;
      • de 3 à 4 CPU : 1.67 fois ;
    • les regex sont assez lentes, il y a potentiellement une bonne optimisation possible en bidouillant des C-strings au lieu des std::string du C++ (le pré-parser C est beaucoup beaucoup plus rapide que le programme C++, aussi parce que son travail ne consiste qu'en des substitutions/suppressions), mais le temps de développement serait plus long, et le risque d'overflow/segfault possible.