Il y a deux ans, j'avais dĂ©jĂ Ă©crit un article sur . Le projet a maintenant progressĂ© et j'ai Ă©galement publiĂ© d'ĂȘtre , c'est pourquoi j'ai dĂ©cidĂ© d'Ă©crire sur Habr ce petit aperçu.

[ ]
à qui cela peut-il intéresser
Cela pourrait vous intĂ©resser si vous travaillez en petite Ă©quipe ou mĂȘme seul. Vous n'avez pas de systĂšme de surveillance et vous n'ĂȘtes pas sĂ»r s'il est vraiment nĂ©cessaire. Ou bien vous avez essayĂ© un logiciel de surveillance populaire et sĂ©rieux « pour les grands » mais cela ne vous a pas vraiment convaincu, ou il fonctionnait en configuration presque par dĂ©faut sans vraiment changer votre vie. Et aussi â si vous n'envisagez pas de consacrer un employĂ© entier (voire un dĂ©partement) Ă surveiller le tableau de bord ou Ă le configurer pendant mĂȘme quelques heures par jour.
Qu'est-ce qui rend okerr atypique
Je vais maintenant vous montrer les fonctionnalités intéressantes d'okerr qui le distinguent de certains autres services de surveillance.
Okerr est un service de surveillance hybride
Lors de la surveillance interne, un « agent » tourne sur les machines surveillées, transmettant des données au serveur de surveillance (par exemple, l'espace disque libre). Dans le cas de la surveillance externe, le serveur effectue des vérifications sur le réseau (par exemple, ping ou accessibilité du site web). Chaque approche a ses propres limites. Okerr utilise les deux options. Les vérifications à l'intérieur des serveurs sont réalisées par un agent trÚs léger (30Ko) ou par vos propres scripts et applications, tandis que les vérifications réseau se font grùce aux capteurs okerr dans différents pays.
okerr n'est pas seulement un logiciel, mais aussi un service
La partie serveur de toute surveillance est grande et complexe, difficile Ă installer et Ă configurer, et elle nĂ©cessite des ressources. Avec okerr, vous pouvez mettre en place votre propre serveur de surveillance (il est gratuit et open source), ou vous pouvez simplement utiliser la partie client et profiter du service de notre serveur. Ăgalement gratuit.
Si la surveillance permet de compenser, de pallier le manque de fiabilitĂ© des serveurs et des applications, se pose alors une question philosophique : qui surveille le gardien ? Comment la surveillance nous informera-t-elle d'un problĂšme si elle-mĂȘme « meurt » pour une raison quelconque, seule ou avec d'autres de vos ressources (par exemple, si la connexion au data center tombe) ? Avec le service externe okerr, ce problĂšme est rĂ©solu : vous recevrez une alerte mĂȘme si tout le data center avec vos serveurs est sans Ă©lectricitĂ© ou subit une attaque de zombies.
Bien sĂ»r, il y a un risque que le serveur okerr soit lui-mĂȘme inaccessible, c'est vrai (comme on le sait, 90 % de la fiabilitĂ© s'obtient souvent simplement et « gratuitement », 99 % â avec un minimum d'efforts, et chaque chiffre supplĂ©mentaire est exponentiellement plus difficile). Mais, d'une part, la probabilitĂ© de cela est plus faible, et d'autre part, le problĂšme ne peut passer inaperçu que si cela coĂŻncide dans le temps avec des problĂšmes sur nos serveurs. Si nous avons une fiabilitĂ© de 99,9 % et que vous avez 99,9 % (ce ne sont pas des chiffres trĂšs Ă©levĂ©s), alors la chance d'une panne non dĂ©tectĂ©e â c'est 0,1 % de 0,1 % = 0,0001 %. Ajouter trois neuf de fiabilitĂ© presque sans efforts et sans coĂ»ts â c'est plutĂŽt bien !
Un autre avantage du monitoring en tant que service est que le fournisseur d'hĂ©bergement ou le studio web peut installer un serveur okerr et offrir l'accĂšs aux clients comme un service supplĂ©mentaire payant ou gratuit. Vos concurrents n'ont qu'un hĂ©bergement et des sites â et vous avez un hĂ©bergement fiable avec surveillance.
Okerr â c'est Ă propos des indicateurs
Un indicateur â c'est une « ampoule ». Il a deux Ă©tats principaux â vert (OK) ou rouge (ERR). Dans le projet â il y a de nombreux indicateurs regroupĂ©s (par exemple, par serveurs). Sur la page principale du projet, vous voyez immĂ©diatement si tout est vert (et vous pouvez fermer) ou si quelque chose clignote en rouge et doit ĂȘtre corrigĂ©. Lors du passage entre ces Ă©tats, une notification est envoyĂ©e. Une fois par jour, pendant que vous configurez, un rĂ©sumĂ© du projet est envoyĂ©.

Chaque indicateur okerr a des conditions intĂ©grĂ©es selon lesquelles il change d'Ă©tat (dans Zabbix, cela s'appelle un trigger). Par exemple, la charge moyenne ne doit pas dĂ©passer 2 (bien sĂ»r, cela peut ĂȘtre configurĂ©). Et pour chaque vĂ©rification interne (charge moyenne, espace disque libre, âŠ) â il y a un watchdog. Si, pour une raison quelconque, nous n'avons pas reçu de confirmation rĂ©ussie dans le temps imparti â une erreur est enregistrĂ©e et une alerte est envoyĂ©e.
Notre processus habituel commence par une vĂ©rification matinale des e-mails, oĂč nous consultons le rĂ©sumĂ© (nous fixons son heure au dĂ©but de la journĂ©e). Si tout est en ordre, nous nous occupons d'autres tĂąches importantes (mais nous pouvons rapidement consulter le tableau de bord d'okerr pour ĂȘtre sĂ»rs que tout est toujours au vert). En cas d'alerte, nous rĂ©agissons.
Bien sûr, il est possible de maintenir des indicateurs « d'information » (pour voir l'état du réseau à partir de la surveillance), mais tout a été conçu pour que les indicateurs soient simples, faciles et rapides à créer pour la surveillance automatique et l'envoi d'alertes.
Le but pour lequel vous configurez okerr rĂ©side dans les alertes, afin que vous puissiez en une minute crĂ©er un indicateur. Celui-ci peut rester « inactif » pendant un an, simplement recevoir des mises Ă jour, et lorsque quelque chose casse un an plus tard, il s'allume et envoie une alerte. La minute que vous avez passĂ©e Ă crĂ©er cet indicateur a portĂ© ses fruits ; vous avez su immĂ©diatement qu'il y avait un problĂšme, avant tout le monde. Il se peut mĂȘme que vous ayez rĂ©parĂ© le problĂšme avant que quelqu'un ne s'en rende compte. Ce qui est rapidement relevĂ© n'est pas considĂ©rĂ© comme tombĂ© !
Sécurité
Ce serait dommage si vous mettez en place une surveillance pour amĂ©liorer la fiabilitĂ©, et que finalement â vous ĂȘtes attaquĂ© Ă travers elle, car il y a de nombreuses vulnĂ©rabilitĂ©s rĂ©seau dans divers outils de surveillance., ).
L'agent (okerrmod du package ), qui fonctionne sur le systĂšme â ce n'est pas un serveur rĂ©seau, mais un client. Par consĂ©quent, il n'y a pas de ports ouverts supplĂ©mentaires sur le serveur surveillĂ©, le client fonctionne facilement derriĂšre un pare-feu ou un NAT et il est trĂšs difficile (je dirais « impossible ») de le pirater via le rĂ©seau, car il n'Ă©coute tout simplement pas de socket rĂ©seau.
Couverture complĂšte de la surveillance
Actuellement, nous avons la rĂšgle suivante â nous apprenons tous les problĂšmes techniques grĂące Ă okerr. Si jamais cette rĂšgle est violĂ©e (okerr ne prĂ©vient pas de son imminence (si possible) ou qu'il est dĂ©jĂ lĂ ) â nous ajoutons des vĂ©rifications dans okerr.
Vérifications externes
Un ensemble assez typique :
- ping
- statut http
- vérification de la validité et de la fraßcheur du certificat SSL (préviendra si la date d'expiration approche)
- port TCP ouvert et la banniÚre qui y est associée
- http grep (une certaine texte [ne] doit pas se trouver sur la page)
- hash sha1 pour détecter les modifications de la page.
- DNS (l'enregistrement DNS doit avoir une certaine valeur)
- WHOIS (préviendra si le domaine arrive bientÎt à expiration)
- Antispam DNSBL (vérification de l'hÎte sur plus de 50 listes noires anti-spam)
Vérifications internes
C'est aussi un ensemble assez typique (mais facilement extensible).
- df (espace libre sur les disques)
- load average
- opentcp (sockets TCP Ă l'Ă©coute ouverts â vous avertira si quelque chose a dĂ©marrĂ© ou s'est arrĂȘtĂ©)
- uptime â simplement le temps de disponibilitĂ© du serveur. Vous avertira s'il change Ă la baisse (c'est-Ă -dire si le serveur est redĂ©marrĂ©)
- client_ip
- dirsize â nous l'utilisons pour surveiller quand nos rootfs de machines virtuelles dĂ©passent la taille autorisĂ©e, sans appliquer de restrictions rigides, ainsi que pour les tailles des rĂ©pertoires personnels des utilisateurs.
- empty et nonempty â surveillent les fichiers qui doivent ĂȘtre vides (ou non vides). Par exemple, le fichier error log du serveur okerr â doit ĂȘtre vide, et s'il contient mĂȘme une ligne, je recevrai une notification et vĂ©rifierai. En revanche, mail.log sur le serveur de messagerie ne doit pas ĂȘtre vide (aprĂšs N minutes aprĂšs la rotation). Parfois, il Ă©tait vide aprĂšs une mise Ă jour systĂšme, quand logrotate ne pouvait pas redĂ©marrer rsyslog correctement.
- linecount â nombre de lignes dans un fichier (comme wc -l). Nous l'utilisons comme un remplacement plus doux pour empty, lorsque le error log peut quand mĂȘme croĂźtre, mais lentement (par exemple, chez nous, Googlebot s'acharne sur certaines pages fermĂ©es). Il y a une limite de 2 lignes en 20 minutes. Si cela dĂ©passe, il y aura une alerte.
Vérifications internes intéressantes
Si à ce stade vous avez lu « en diagonale », il sera maintenant plus intéressant de lire plus attentivement.
backups
Surveille les sauvegardes dans le rĂ©pertoire. Nous nommons les fichiers de sauvegarde comme « ServerName-20200530.tar.gz ». Pour chaque serveur, un indicateur ServerName-DATE.tar.gz est créé dans okerr (la date rĂ©elle est remplacĂ©e par la ligne « DATE »). Cela surveille Ă la fois la prĂ©sence d'une nouvelle sauvegarde et sa taille (par exemple, elle ne peut pas ĂȘtre infĂ©rieure Ă 90 % de la sauvegarde prĂ©cĂ©dente).
Que faut-il faire pour qu'une nouvelle sauvegarde commence Ă ĂȘtre suivie, une fois que nous avons commencĂ© Ă la crĂ©er et Ă la dĂ©poser dans ce rĂ©pertoire ? Rien ! C'est une approche trĂšs pratique, lorsqu'il faut faire « rien », parce que :
- Faire « rien » â c'est assez rapide, cela fait gagner du temps.
- Il est difficile d'oublier de faire « rien ».
- Il est difficile de faire « rien » de maniĂšre incorrecte, avec erreur. Rien â c'est la mĂ©thode la plus fiable.
Si jamais des fichiers de sauvegarde rĂ©cents cessent d'apparaĂźtre â il y aura une alerte. Si, par exemple, vous avez dĂ©sactivĂ© l'un des serveurs, et qu'il ne devrait plus y avoir de sauvegardes â vous devrez supprimer l'indicateur (via l'interface web ou depuis le shell via l'API).
maxfilesz
Surveille la taille des plus gros fichiers (généralement : /var/log/*). Cela permet de détecter des problÚmes imprévus, comme des tentatives de piratage par mot de passe ou l'envoi de spam via le serveur.
runstatus/runline
Ce sont deux modules proxy importants pour exĂ©cuter d'autres programmes sur le serveur. Runstatus indique le code de sortie du programme. Par exemple, dans okerr, il n'y a pas (pas besoin) d'un module pour vĂ©rifier que les services systemd fonctionnent. Cela se fait via runstatus (voir ci-dessous). Runline â indique au serveur la ligne que le programme fournit. Par exemple, temp_RUN="cat /sys/class/thermal/thermal_zone0/temp" dans la config de Runline sur notre serveur, crĂ©e un indicateur servername:temp avec la tempĂ©rature du processeur.
sql
ExĂ©cute une requĂȘte numĂ©rique sur MySQL et communique le rĂ©sultat Ă l'indicateur. Dans le cas le plus simple, on peut faire, par exemple, «SELECT 1» â cela vĂ©rifiera que la base de donnĂ©es fonctionne globalement.
Mais une application beaucoup plus intĂ©ressante serait, par exemple, de suivre le nombre de commandes dans une boutique en ligne. Si vous savez que vous avez 100 commandes par heure, vous pouvez dĂ©finir une limite minimale Ă 100 ou 80. Ainsi, si soudainement vos ventes chutent â vous recevrez une alerte et pourrez y remĂ©dier.
Remarquez â peu importe pour quelle raison imprĂ©visible cela s'est produit :
- Le serveur est simplement inaccessible (hors tension ou hors réseau), et l'alerte est venue du fait que l'indicateur «a expiré».
- Le serveur est chargé, fonctionne lentement ou perd des paquets, les utilisateurs sont frustrés et repartent sans acheter.
- Le serveur est sur des listes de spam et les e-mails de lui ne sont pas acceptés, les utilisateurs ne peuvent pas s'inscrire.
- Le budget de la campagne publicitaire est épuisé, les banniÚres ne s'affichent plus.
Il peut y avoir de nombreuses raisons, et on ne peut pas toutes les prĂ©voir Ă l'avance, et techniquement il est difficile de les suivre. Mais il est facile de surveiller un paramĂštre final (les commandes) et de dĂ©terminer Ă partir de lĂ si la situation est suspecte et mĂ©rite d'ĂȘtre examinĂ©e.
Indicateurs logiques
Permet d'utiliser des expressions logiques (syntaxe Python) via le module (). Pour l'expression, les donnĂ©es du projet et de ses indicateurs sont accessibles. Par exemple, dans le chapitre sur le contrĂŽle SQL ci-dessus, vous avez peut-ĂȘtre remarquĂ© une faiblesse â pendant la journĂ©e, nous pouvons avoir environ 100 ventes par heure, mais la nuit, seulement 20, et c'est normal, pas un problĂšme. Que faire ? L'indicateur va constamment paniquer la nuit.
Vous pouvez crĂ©er deux indicateurs, un diurne et un nocturne. Les deux peuvent ĂȘtre «silencieux» (ils n'enverront pas de notifications). Et crĂ©er un indicateur logique qui exige que l'indicateur diurne soit OK avant 20h00, et aprĂšs 20h00, il suffit que l'indicateur nocturne soit OK.
Un autre exemple d'utilisation d'un indicateur logique est l'escalade. Par exemple, le chef de projet se désinscrit des alertes (ce n'est pas nécessaire pour lui, les administrateurs doivent réagir aux problÚmes courants), mais il s'inscrit à un indicateur logique qui devient rouge si un quelconque indicateur du projet n'est pas corrigé dans le temps imparti.
De plus, il est possible de dĂ©finir un temps autorisĂ© pour les travaux, par exemple, de 3h Ă 5h du matin. Nous ne nous soucions pas si les serveurs et les sites « tombent » Ă ce moment-lĂ . Mais Ă 5h00, ils doivent fonctionner. S'ils ne fonctionnent pas Ă tout autre moment, une alerte se dĂ©clenche. De mĂȘme, l'indicateur logique permet de prendre en compte la redondance des serveurs. Si vous avez 5 serveurs web, les administrateurs peuvent Ă©teindre 1 Ă 2 serveurs Ă tout moment. Mais si moins de 3 sur 5 serveurs sont en service, une alerte sera gĂ©nĂ©rĂ©e.
Les exemples ci-dessus ne sont pas des fonctions d'okerr, pas des caractĂ©ristiques Ă activer et configurer. Toutes ces fonctionnalitĂ©s ne sont pas disponibles dans okerr, mais il y a un module logique qui permet de mettre en Ćuvre cette fonctionnalitĂ© (En gros, comme dans un langage de programmation â si nous avons des opĂ©rateurs arithmĂ©tiques, il n'est pas nĂ©cessaire d'avoir une fonction spĂ©ciale dans le langage pour calculer 20% de TVA, on peut toujours le faire soi-mĂȘme selon ses besoins).
L'indicateur logique est probablement l'un des rares sujets relativement complexes dans okerr, mais la bonne nouvelle est que vous n'avez pas besoin de les maĂźtriser tant qu'un besoin ne se fait pas sentir. Cependant, ils Ă©tendent considĂ©rablement les possibilitĂ©s tout en gardant le systĂšme lui-mĂȘme assez simple.
Ajout de vos propres contrĂŽles
Je voudrais vraiment faire passer le message que okerr n'est pas un ensemble de mille contrĂŽles prĂȘts Ă l'emploi pour toutes les situations, mais au contraire â avant tout â un moteur simple avec une possibilitĂ© simple de crĂ©er vos propres vĂ©rifications. CrĂ©er vos propres vĂ©rifications dans okerr n'est pas une tĂąche pour des hackers, des co-dĂ©veloppeurs du systĂšme, ou mĂȘme des utilisateurs avancĂ©s d'okerr, mais une tĂąche rĂ©alisable pour tout administrateur qui a installĂ© Linux pour la premiĂšre fois il y a un mois.
Les vérifications de base sont réalisées via le module :
Cette ligne dans la configuration enverra une notification si jamais /bin/true ne démarre pas ou renvoie un code autre que 0.
true_OK=\/bin\/trueUne seule ligne â et voilĂ , nous avons dĂ©jĂ un peu Ă©largi la fonctionnalitĂ© d'okerr.
MĂȘme une telle vĂ©rification a dĂ©jĂ sa valeur : si jamais votre serveur tombe en panne, l'indicateur correspondant sur le serveur okerr ne sera pas mis Ă jour Ă temps et, aprĂšs un certain temps, une alerte apparaĂźtra.
Cette vérification vous alertera que le serveur apache2 est tombé (on ne sait jamais...) :
apache_OK="systemctl is-active --quiet apache2"Donc, si vous maĂźtrisez n'importe quel langage de programmation, vous pouvez au moins Ă©crire des scripts shell â vous pouvez dĂ©jĂ ajouter vos propres vĂ©rifications.
Plus compliquĂ© â vous pouvez Ă©crire (dans n'importe quel langage) votre propre module pour okerrmod. Dans le cas le plus simple, il ressemble Ă ceci :
#!/usr/bin/python3
print("STATUS: OK")Ce n'est pas si compliquĂ©, n'est-ce pas ? Le module doit effectuer la vĂ©rification elle-mĂȘme et afficher les rĂ©sultats sur STDOUT. Un module plus compliquĂ© donne, par exemple, ceci :
$ okerrmod --dump df
NAME: pi:df-\
TAGS: df
METHOD: numerical|maxlim=90
DETAILS: 49.52%, 13.9G\/28.2G utilisés, 13.0G libres
STATUS: 49.52
NAME: pi:df-\/boot
TAGS: df
METHOD: numerical|maxlim=90
DETAILS: 84.32%, 53.1M\/62.9M utilisés, 9.9M libres
STATUS: 84.32Il met Ă jour plusieurs indicateurs en mĂȘme temps (sĂ©parĂ©s par une ligne vide), crĂ©e des indicateurs si nĂ©cessaire, indique les dĂ©tails de la vĂ©rification et les tags pour retrouver facilement les indicateurs dans le tableau de bord.
Telegram
Il y a un bot Telegram . Vous n'avez pas besoin d'encombrer votre tĂ©lĂ©phone avec des applications sĂ©parĂ©es (je n'aime pas non plus, qu'il faille une application pour Pyaterochka, une autre pour Lenta, une troisiĂšme pour MTS, et ainsi de suite pour tout le monde). Un seul Telegram â c'est suffisant. Via Telegram, vous pouvez recevoir des alertes immĂ©diatement, vĂ©rifier le statut du projet et donner l'ordre de revĂ©rifier tous les indicateurs problĂ©matiques. Vous sortez du théùtre\/avion, n'avez pas tenu le pouls pendant deux heures, allumez Telegram, appuyez sur un bouton dans le chatbot et assurez-vous que tout va bien.
Pages de statut
De nos jours, les pages de statut sont presque indispensables pour toute entreprise ayant des IT, un engagement envers la fiabilité et un respect pour ses clients\/utilisateurs.
Imaginez la situation : un utilisateur souhaite faire quelque chose, consulter des informations ou passer une commande, et rien ne fonctionne. Il ne sait pas d'oĂč vient le problĂšme, de quel cĂŽtĂ© il est et quand il sera rĂ©solu. Peut-ĂȘtre que votre site est tout simplement hors service ? Ou qu'il est en panne depuis six mois et qu'il ne sera rĂ©parĂ© que dans deux ans ? Pourtant, il doit acheter son rĂ©frigĂ©rateur maintenant, il est dĂ©jĂ dans le panier... Et c'est tout Ă fait diffĂ©rent lorsque l'utilisateur voit que quelque chose ne va pas de votre cĂŽtĂ© (au moins, il est clair que le problĂšme ne vient pas de lui), que le problĂšme a Ă©tĂ© identifiĂ©, que vous travaillez dĂ©jĂ dessus et qu'un temps de rĂ©paration approximatif a peut-ĂȘtre mĂȘme Ă©tĂ© communiquĂ©. L'utilisateur peut s'abonner et recevoir un avis par e-mail lorsque le problĂšme sera rĂ©solu et qu'il pourra faire ce qu'il voulait (acheter son rĂ©frigĂ©rateur).

Des problĂšmes et des temps d'arrĂȘt, cela arrive Ă tout le monde. Cependant, les utilisateurs et partenaires font davantage confiance Ă ceux qui sont plus transparents et qui abordent ces situations avec responsabilitĂ©.
Voici . Voici des exemples de la maniĂšre dont ces pages apparaissent dans des projets et . .
Basculement
Pour ne pas alourdir cet article encore plus, je renverrai Ă mon article prĂ©cĂ©dent â . Si vous pouvez crĂ©er un serveur de secours, avec un systĂšme de basculement, vous n'aurez gĂ©nĂ©ralement pas de longs temps d'arrĂȘt â une fois le problĂšme dĂ©tectĂ©, les utilisateurs seront automatiquement redirigĂ©s vers le serveur de secours fonctionnel. Et cela me semble ĂȘtre une fonctionnalitĂ© trĂšs intĂ©ressante et unique, qui est peu courante.
Exigences systĂšme faibles
Pour les serveurs okerr â nous utilisons des machines avec 2 Go de RAM. Pour les capteurs rĂ©seau, mĂȘme 512 Mo suffisent. La partie cliente â presque rien. (Le paquet pĂšse 26 Ko, mais nĂ©cessite Python3 et des bibliothĂšques standard). Le client s'exĂ©cute Ă partir d'un script cron, il consomme donc zĂ©ro mĂ©moire de façon continue. Parmi les machines surveillĂ©es, nous avons des capteurs (super VPS bon marchĂ© de 512 Mo RAM) et des Raspberry Pi. On peut mĂȘme envoyer des mises Ă jour sans la partie cliente ! (voir ci-dessous)
Compte tenu de cela â okerr est probablement le plus gratuit Un systĂšme de surveillance existant, car mĂȘme pour utiliser un autre systĂšme open source gratuit comme Zabbix ou Nagios, il faut lui allouer des ressources (serveur), ce qui coĂ»te de l'argent. De plus, un certain entretien du serveur est requis. Avec okerr, cet aspect peut ĂȘtre Ă©cartĂ©. Vous pouvez Ă©galement choisir de ne pas l'Ă©liminer et d'utiliser votre propre serveur â selon ce qui vous convient le mieux.
API et intégration dans vos propres logiciels
Une architecture simple et ouverte. Okerr dispose d'une architecture assez simple , facile à manipuler. Vous avez besoin de créer 1000 indicateurs ? Un script shell de 3-4 lignes suffira. Vous devez reconfigurer 1000 indicateurs ? C'est tout aussi simple. Par exemple, nous voulons vérifier à nouveau tous nos certificats HTTPS avec un capteur basé en Russie :
#!/bin/sh
for indicator in `okerrclient --api-filter sslcert`
do
echo set location for $indicator
okerrclient --api-set location=ru retest=1 --name $indicator
doneVous pouvez mettre Ă jour un indicateur en utilisant notre module client, ou mĂȘme sans lui, simplement via curl.
# short and nice (using okerrupdate and config file)
$ okerrupdate MyIndicator OK
# only curl is enough!
$ curl -d 'textid=MyProject&name=MyIndicator&secret=MySecret&status=OK' https://bravo.okerr.com/Il est possible de mettre Ă jour les indicateurs directement depuis votre programme. Par exemple, en envoyant des signaux heartbeat pour que okerr sache qu'il est en marche, et pour dĂ©clencher une alarme s'il tombe ou se fige. D'ailleurs, les composants okerr fonctionnent ainsi â okerr surveille lui-mĂȘme, et les problĂšmes dans presque n'importe quel module seront dĂ©tectĂ©s et gĂ©nĂ©reront une alerte. (Et dans le cas de ce « presque », ils sont vĂ©rifiĂ©s en croisĂ© avec un autre serveur)
Voici un tel code (simplifié) dans notre bot Telegram :
from okerrupdate import OkerrProject, OkerrExc
op = OkerrProject()
uptimei = op.indicator("{}:telebot_uptime".format(hostname))
...
uptimei.update('OK', 'pid: {} Uptime: {} cmds: {}'.format(
os.getpid(), dhms(uptime), commands_cnt))Pour mettre Ă jour les indicateurs Ă partir de programmes Python â il existe une bibliothĂšque , pour tous les autres langages â il n'y a pas de bibliothĂšque, mais vous pouvez soit appeler le script okerrupdate, soit effectuer une requĂȘte HTTP au serveur okerr.
Comment okerr nous aide
Okerr a changĂ© notre vie. Vraiment. Peut-ĂȘtre qu'un autre systĂšme de surveillance pourrait Ă©galement le faire, mais travailler avec okerr est facile et simple, et il contient toutes les fonctionnalitĂ©s dont nous avions besoin (ce qui manquait â nous l'avons ajoutĂ©). D'ailleurs, si une fonctionnalitĂ© manque â demandez, et je l'ajouterai (je ne promets rien, mais j'aimerais que okerr soit le meilleur systĂšme de surveillance pour les projets petits Ă moyens). Ou, encore mieux, ajoutez-le vous-mĂȘme â c'est simple.
Nous avons réussi à vivre selon le principe « Apprendre de tous les problÚmes via okerr ». Si un problÚme se produit et que nous ne l'avons pas appris d'okerr, nous ajoutons une vérification dans okerr. (Dans ce cas, par « nous », je fais référence à nous en tant qu'utilisateurs du systÚme, et non aux co-développeurs). Au début, c'était fréquent, mais maintenant cela devient trÚs rare.
Surveillance
GrĂące Ă okerr, nous surveillons la taille des journaux sur tous les serveurs. Lire attentivement chaque ligne du journal est bien sĂ»r impossible, mais simplement suivre la vitesse de croissance est dĂ©jĂ trĂšs utile. GrĂące Ă cela, nous avons dĂ©tectĂ© Ă la fois l'envoi de spam et les tentatives de bruteforce pour deviner les mots de passe, ainsi que des applications qui « deviennent folles », oĂč quelque chose ne fonctionne pas et qui rĂ©pĂštent sans cesse (ajoutant Ă chaque fois quelques lignes dans le journal).
Certificats SSL. TrĂšs rapidement aprĂšs le lancement notre client a commencĂ© Ă fournir Ă ses clients des certificats SSL gratuits (environ mille d'entre eux). Et cela s'est avĂ©rĂ© ĂȘtre un vĂ©ritable cauchemar en matiĂšre d'administration ! Le fait est que les sites sont « vivants », les clients demandent rĂ©guliĂšrement des modifications, et les programmeurs les rĂ©alisent. Ils peuvent trĂšs facilement dĂ©placer un site vers un autre DocumentRoot par exemple. Ou ajouter une redirection sans condition dans la configuration de l'hĂŽte virtuel. Naturellement, aprĂšs cela, la mise Ă jour automatique des certificats Ă©choue. Maintenant, tous nos hĂŽtes SSL sont ajoutĂ©s automatiquement Ă okerr via un autre utilitaire utile de notre ensemble. . Nous lançons simplement a2okerr.py â et si plusieurs nouveaux sites apparaissent sur le serveur, ils apparaissent automatiquement dans okerr. Si, pour une raison quelconque, le certificat ne se met pas Ă jour, trois semaines avant son expiration â nous sommes au courant et nous nous demandons pourquoi il ne se met pas Ă jour, ce petit chien. a2certbot.py du mĂȘme ensemble â cela aide beaucoup dans ce cas (il vĂ©rifie immĂ©diatement les problĂšmes les plus probables et indique ce qui a Ă©tĂ© vĂ©rifiĂ© avec succĂšs et oĂč il y a probablement un problĂšme).
Nous surveillons la date d'expiration de tous nos domaines. Et tous nos serveurs de messagerie, qui envoient des emails, sont également vérifiés sur plus de 50 listes noires différentes. (Et parfois ils y figurent). D'ailleurs, saviez-vous que les serveurs de messagerie de Google figurent également sur des listes noires ? Juste pour des tests, nous avons ajouté mail-wr1-f54.google.com aux serveurs suivis, et il est effectivement sur la liste noire SORBS ! (C'est une question de la valeur des « antispammeurs »)
Les sauvegardes â comme je l'ai dĂ©jĂ mentionnĂ©, il est trĂšs simple de les suivre avec okerr. Mais nous surveillons Ă©galement les sauvegardes rĂ©centes sur notre serveur, et (Ă l'aide d'un petit utilitaire qui utilise okerr) â les sauvegardes que nous tĂ©lĂ©chargeons sur Amazon Glacier. Et oui â il y a parfois des problĂšmes. Il n'est pas surprenant que nous restions vigilants.
Nous utilisons un indicateur d'escalade. Cela montre si un problĂšme n'est pas rĂ©solu depuis longtemps. Et moi-mĂȘme, lorsque je traite certaines tĂąches, je peux parfois les oublier. L'escalade â c'est un bon rappel, mĂȘme si je m'observe moi-mĂȘme.
Dans l'ensemble, je pense que la qualitĂ© de notre travail s'est considĂ©rablement amĂ©liorĂ©e. Il y a presque pas de temps d'arrĂȘt (ou le client ne peut pas le remarquer. Chut !), et la charge de travail a diminuĂ©, rendant les conditions de travail plus sereines. Nous sommes passĂ©s d'un travail chaotique avec des rĂ©parations d'urgence Ă un travail calme et mesurĂ©, oĂč de nombreux problĂšmes peuvent ĂȘtre anticipĂ©s Ă l'avance avec du temps pour les prĂ©venir. MĂȘme les problĂšmes qui se sont produits â il est Ă©galement devenu plus facile de les corriger : d'une part, nous en prenons connaissance avant que les clients ne dĂ©clenchent une panique, d'autre part, il arrive souvent que le problĂšme soit liĂ© Ă un travail rĂ©cent (en faisant une chose, j'en ai cassĂ© une autre) â donc il est plus facile de le rĂ©soudre sur le vif.
Encore un autre cas a eu lieuâŠ
Saviez-vous que dans le populaire Debian 9 (Stretch), un paquet aussi populaire que phpmyadmin est toujours (depuis plusieurs mois !) en statut vulnĂ©rable ? (). Lorsque la vulnĂ©rabilitĂ© est sortie â nous avons rapidement pris diffĂ©rentes mesures pour la couvrir. Mais j'ai mis en place un suivi dans okerr pour la page du security-tracker, afin de savoir quand une solution « Ă©lĂ©gante » sera publiĂ©e (via la somme de contenu SHA1). Ă plusieurs reprises, l'indicateur m'a alertĂ©, la page a changĂ©, mais comme vous le voyez â jusqu'Ă prĂ©sent (depuis janvier 2019 !) il n'est pas indiquĂ© que le problĂšme est rĂ©solu. Peut-ĂȘtre que, d'ailleurs, quelqu'un sait de quel problĂšme il s'agit, pourquoi un paquet si important est vulnĂ©rable depuis plus d'un an ?
Une autre fois dans une situation similaire : aprÚs une vulnérabilité dans SSH, il fallait mettre à jour tous les serveurs. Et quand on donne une tùche, il faut surveiller son exécution. (Les subordonnés ont tendance à mal comprendre, à oublier, à se mélanger, à faire des erreurs). Donc, d'abord, nous avons ajouté dans okerr une vérification de la version de SSH sur tous les serveurs, et via okerr, nous avons veillé à ce que les mises à jour soient appliquées sur tous les serveurs. (Pratique ! J'ai choisi ce type d'indicateur, et on voit immédiatement sur quel serveur quelle version est installée). Lorsque nous nous sommes assurés que la tùche était accomplie sur tous les serveurs, nous avons supprimé les indicateurs.
Ă quelques reprises, il y a eu des situations oĂč un certain problĂšme survenait, puis disparaissait tout seul. (Cela doit sĂ»rement parler Ă tout le monde ?). Jusqu'Ă ce que tu le remarques, jusqu'Ă ce que tu vĂ©rifies â et lĂ , il n'y a dĂ©jĂ plus rien Ă vĂ©rifier â tout fonctionnait dĂ©jĂ bien. Mais ensuite, ça se dĂ©gradait Ă nouveau. Nous avons rencontrĂ© cela, par exemple, avec les produits que nous avons tĂ©lĂ©chargĂ©s sur Amazon Marketplace (MWS). Ă un moment donnĂ©, les inventaires tĂ©lĂ©chargĂ©s Ă©taient incorrects (pas les bonnes quantitĂ©s de produits et pas les bons prix). Nous avons compris le problĂšme. Mais pour y parvenir, il Ă©tait important de connaĂźtre le problĂšme immĂ©diatement. Malheureusement, MWS, comme tous les services d'Amazon, est un peu lent, donc il y avait toujours un dĂ©calage, mais nous avons rĂ©ussi Ă Ă©tablir au moins approximativement le lien entre le problĂšme et les scripts qui le provoquent (nous avons mis en place une vĂ©rification, l'avons liĂ©e Ă okerr, et avons vĂ©rifiĂ© dĂšs que nous avons reçu une alerte).
RĂ©cemment, un grand et coĂ»teux hĂ©bergeur europĂ©en, utilisĂ© par notre client, a ajoutĂ© un cas intĂ©ressant Ă notre collection. Tout Ă coup, tous nos serveurs ont disparu des radars ! Au dĂ©but, le client a remarquĂ© par lui-mĂȘme (plus rapidement qu'un Ă©clair !) que le site sur lequel il travaillait ne s'ouvrait pas et a ouvert un ticket Ă ce sujet. Mais le problĂšme n'Ă©tait pas juste sur un site, mais sur tous ! (Natasha, nous avons tout perdu !). Ă ce moment, Okerr a commencĂ© Ă envoyer de longs rapports avec tous les indicateurs qui avaient Ă©tĂ© activĂ©s. Panique, panique, nous courons en rond (que faire d'autre ?). Puis tout est revenu Ă la normale. Il s'est avĂ©rĂ© qu'il y avait des travaux de maintenance dans le centre de donnĂ©es (une fois tous les plusieurs annĂ©es) et que nous aurions dĂ» ĂȘtre avertis, Ă©videmment. Mais quelque chose s'est mal passĂ© de leur cĂŽtĂ© et ils ne nous ont pas prĂ©venus. Quoi qu'il en soit, il y a eu un infarctus de plus ou de moins. Mais aprĂšs avoir tout restaurĂ©, il faut tout vĂ©rifier Ă nouveau ! Je n'imagine pas comment je l'aurais fait moi-mĂȘme. Okerr a tout testĂ© en quelques minutes. Il s'est avĂ©rĂ© que la plupart des serveurs Ă©taient simplement temporairement hors service, mais fonctionnaient. Certains se sont redĂ©marrĂ©s, mais ont Ă©galement retrouvĂ© leur Ă©tat normal. Parmi toutes les pertes, nous avons perdu deux sauvegardes qui devaient ĂȘtre créées en cron et chargĂ©es pendant cette pĂ©riode de chaos total. Je n'ai mĂȘme pas essayĂ© de les crĂ©er, car aprĂšs une journĂ©e, des alertes sont arrivĂ©es disant que tout allait bien et que les sauvegardes Ă©taient revenues. J'aime beaucoup cet exemple, car Okerr s'est rĂ©vĂ©lĂ© trĂšs utile dans une situation que nous n'avions mĂȘme pas envisagĂ©e Ă l'avance, mais c'est justement le but de la surveillance : faire face Ă l'imprĂ©visible.
Pour les capteurs Okerr, nous utilisons les hĂ©bergements les moins chers (la qualitĂ© et la fiabilitĂ© n'ont pas d'importance, ils se couvrent les uns les autres). RĂ©cemment, nous avons trouvĂ© un hĂ©bergeur trĂšs dynamique Ă un prix super bas, les benchmarks sont incroyables. Mais... il s'avĂšre parfois que les connexions sortantes depuis la machine virtuelle se font Ă partir d'une autre (voisine) adresse IP. Des merveilles. Le module client_ip avec ne reçoit pas la bonne adresse IP. Et mĂȘme dans les journaux du serveur, il est visible que la mise Ă jour est Ă©galement arrivĂ©e de cette adresse IP voisine. Nous sommes en train de rĂ©soudre cela avec le support. Heureusement, nous avons remarquĂ© cela en temps normal. Cependant, il est souvent le cas que l'accĂšs est enregistrĂ© dans une liste blanche d'adresses IP â et si le serveur clignote parfois pendant un court moment de cette façon â il peut ĂȘtre trĂšs long de tenter de repĂ©rer ce problĂšme.
Et encore une chose â Ă©tant donnĂ© que nous parlons des hĂ©bergements VPS â nous utilisons toujours des solutions abordables (hetzner, ovh, scaleway). En termes de benchmarks et de stabilitĂ©, nous sommes trĂšs satisfaits. Nous utilisons Ă©galement des services beaucoup plus coĂ»teux comme Amazon EC2 pour d'autres projets. Ainsi, grĂące Ă okerr, nous avons notre propre avis fondĂ©. Les deux peuvent tomber en panne. Et je ne dirais pas qu'au fil de nos observations, les hĂ©bergements pas chers comme hetzner se sont rĂ©vĂ©lĂ©s beaucoup moins stables qu'EC2. Donc, si vous n'ĂȘtes pas attachĂ©s Ă d'autres fonctionnalitĂ©s d'Amazon â pourquoi payer plus cher ? đ
Et aprĂšs ?
Si Ă ce stade je ne vous ai pas encore trop dĂ©couragĂ© d'Okerr â alors essayez ! Vous pouvez accĂ©der directement Ă (Cliquez maintenant !). Mais gardez Ă l'esprit que le compte dĂ©mo est commun Ă tous, donc si vous faites quelque chose â quelqu'un d'autre dans ce mĂȘme compte peut vous dĂ©ranger en mĂȘme temps. Ou (mieux) inscrivez-vous via le lien vers â c'est simple, sans SMS. Si vous n'aimez pas utiliser votre vĂ©ritable e-mail â vous pouvez opter pour un e-mail temporaire, comme mailinator (Je recommande ). De tels comptes peuvent ĂȘtre supprimĂ©s avec le temps â mais cela conviendra pour un test.
AprĂšs vous ĂȘtre inscrit, il vous sera proposĂ© de suivre une formation (effectuer quelques tĂąches d'apprentissage assez simples). Les limites initiales sont trĂšs faibles, mais suffisent pour un apprentissage ou pour un serveur. AprĂšs avoir terminĂ© la formation â les limites (comme le nombre maximal d'indicateurs) seront augmentĂ©es.
Dans la documentation â en premier lieu pour la partie serveur et pour le client (). Mais si quelque chose n'est pas clair â Ă©crivez Ă support (at) okerr.com ou laissez un ticket â nous essaierons de rĂ©soudre tout cela rapidement.
Si vous envisagez d'utiliser sĂ©rieusement et que ces limites Ă©levĂ©es ne suffisent pas â faites-le savoir au support, nous les augmenterons (gratuitement).
Vous souhaitez installer le serveur okerr sur votre propre serveur ? Voici . Nous recommandons d'installer sur une machine virtuelle propre, ainsi vous pourrez le faire simplement avec un script d'installation. Sur votre propre machine virtuelle â aucune restriction :-). Et encore une fois â si vous avez besoin d'aide â nous serons toujours lĂ pour vous assister.
Nous voulons que ce projet dĂ©colle, que le monde devienne plus sĂ»r grĂące Ă nous. GrĂące aux logiciels et services gratuits, le monde est devenu plus amical et se dĂ©veloppe plus rapidement. Les sources peuvent ĂȘtre stockĂ©es sur le github gratuit, pour le mail on peut utiliser le gmail gratuit. Nous utilisons gratuitement pour le support. Il n'est pas nĂ©cessaire de payer pour des serveurs, de tĂ©lĂ©charger ou de configurer quoi que ce soit, ni de rĂ©soudre divers problĂšmes d'exploitation. Chaque nouveau projet, chaque Ă©quipe â a immĂ©diatement un mail, des dĂ©pĂŽts et un CRM. Tout cela est de trĂšs bonne qualitĂ©, gratuit et disponible immĂ©diatement. Nous voulons que le monitoring fonctionne de la mĂȘme maniĂšre â des petites entreprises et des projets pourraient utiliser okerr gratuitement et mĂȘme en phase de dĂ©marrage et de croissance, avoir la fiabilitĂ© de grands projets sĂ©rieux.
Source : habr.com
