Übersicht über das Okerr-Hybridüberwachungssystem

Vor zwei Jahren habe ich bereits einen Beitrag verfasst Einfaches Failover für eine Website über okerr. Jetzt gibt es eine gewisse Entwicklung des Projekts und ich habe es auch veröffentlicht okerr serverseitiger Quellcode unter offene Lizenz, deshalb habe ich beschlossen, diese kurze Rezension über Habr zu schreiben.

Übersicht über das Okerr-Hybridüberwachungssystem
[ in voller Größe ]

Für wen es interessant sein könnte

Dies könnte für Sie interessant sein, wenn Sie in einem kleinen Team oder alleine arbeiten. Sie haben kein Monitoring und sind sich nicht sicher, ob Sie es wirklich brauchen. Entweder haben Sie ein beliebtes seriöses Monitoring „für die Großen“ ausprobiert, aber es hat sich bei Ihnen irgendwie nicht durchgesetzt, oder es funktioniert in einer fast standardmäßigen Konfiguration und hat Ihr Leben nicht wesentlich verändert. Und auch – wenn Sie definitiv nicht vorhaben, einen ganzen Mitarbeiter (oder gar eine Abteilung) damit zu beauftragen, das Monitoring-Dashboard mindestens ein paar Stunden am Tag zu überwachen oder zu konfigurieren.

Warum okerr ungewöhnlich ist

Als nächstes werde ich interessante Merkmale des Okerra zeigen, die es von einigen anderen Überwachungssystemen unterscheiden.

Okerr ist eine Hybridüberwachung

Bei der internen Überwachung läuft auf den überwachten Maschinen ein „Agent“, der Daten an den Überwachungsserver übermittelt (z. B. freien Speicherplatz). Wenn der Server extern ist, führt er Prüfungen über das Netzwerk durch (z. B. Ping oder Website-Verfügbarkeit). Jeder Ansatz hat seine Grenzen. Okerr nutzt beide Möglichkeiten. Überprüfungen innerhalb von Servern werden von einem sehr einfachen (30 KB) Agenten oder Ihren eigenen Skripten und Anwendungen durchgeführt, und Netzwerküberprüfungen werden durch okerr-Sensoren in verschiedenen Ländern durchgeführt.

okerr ist nicht nur Software, sondern auch eine Dienstleistung

Der Serverteil jeder Überwachung ist groß und komplex, er ist schwierig zu installieren und zu konfigurieren und erfordert Ressourcen. Mit okerr können Sie Ihren eigenen Überwachungsserver installieren (kostenlos und Open Source) oder einfach nur den Client-Teil verwenden und den Dienst unseres Servers nutzen. Auch kostenlos.

Wenn Sie mit der Überwachung die mangelnde Zuverlässigkeit von Servern und Anwendungen kompensieren und vertuschen können, stellt sich die philosophische Frage: Wer ist der Wächter? Wie informiert uns die Überwachung über ein Problem, wenn es selbst aus irgendeinem Grund einzeln oder zusammen mit Ihren anderen Ressourcen „gestorben“ ist (z. B. der Kanal zum Rechenzentrum ist ausgefallen)? Bei Nutzung des externen Dienstes okerr – dieses Problem ist behoben – erhalten Sie eine Warnung, auch wenn das gesamte Rechenzentrum mit Ihren Servern ohne Strom ist oder von Zombies angegriffen wird.

Natürlich besteht das Risiko, dass der okerr-Server selbst nicht verfügbar ist, das ist wahr (wie Sie wissen, werden 90 % der Zuverlässigkeit immer einfach und „kostenlos“ erreicht, 99 % mit minimalem Aufwand und jede weitere neun ist es exponentiell schwieriger). Aber erstens ist die Wahrscheinlichkeit dafür geringer, und zweitens kann das Problem nur dann unbemerkt bleiben, wenn es mit Problemen auf unseren Servern zusammenfällt. Wenn wir eine Zuverlässigkeit von 99.9 % haben und Sie 99.9 % haben (nicht zu hohe Zahlen), dann beträgt die Wahrscheinlichkeit eines unentdeckten Fehlers 0.1 % von 0.1 % = 0.0001 %. Es ist sehr gut, Ihre Zuverlässigkeit fast ohne Aufwand und ohne Kosten um drei Neunen zu erhöhen!

Ein weiterer Vorteil von Monitoring als Service besteht darin, dass ein Hosting-Anbieter oder ein Webstudio einen Okerr-Server installieren und den Clients als kostenpflichtige oder kostenlose Zusatzleistung Zugriff gewähren kann. Ihre Konkurrenten verfügen nur über Hosting und Websites, Sie jedoch über zuverlässiges Hosting mit Überwachung.

Bei Okerr geht es um Indikatoren

Der Indikator ist eine „Glühbirne“. Es gibt zwei Hauptzustände: Grün (OK) und Rot (ERR). Das Projekt enthält viele gruppierte Indikatoren (z. B. nach Server). Auf der Hauptseite des Projekts sehen Sie sofort, dass entweder alles grün ist (und Sie können es schließen) oder dass etwas rot leuchtet und korrigiert werden muss. Beim Übergang zwischen diesen Zuständen wird eine Warnung gesendet. Einmal am Tag, während Sie es einrichten, wird eine Zusammenfassung des Projekts gesendet.

Übersicht über das Okerr-Hybridüberwachungssystem

Jeder okerr-Indikator verfügt über integrierte Bedingungen, durch die er seinen Zustand ändert (in Zabbix wird dies als Trigger bezeichnet). Beispielsweise sollte der Lastdurchschnitt nicht mehr als 2 betragen (dies ist natürlich konfigurierbar). Und für jede interne Prüfung (durchschnittliche Auslastung, freie Festplatte, ...) gibt es einen Watchdog. Wenn wir aus irgendeinem Grund zum vereinbarten Zeitpunkt keine erfolgreiche Bestätigung erhalten, wird ein Fehler protokolliert und eine Warnung gesendet.

Unser üblicher Arbeitsrhythmus besteht darin, morgens E-Mails zu lesen und neben anderen Briefen auch die Zusammenfassung durchzusehen (wir planen dies zu Beginn der Arbeit ein). Wenn darin alles in Ordnung ist, erledigen wir andere wichtige Dinge (aber zur Sicherheit können wir schnell einen Blick auf das Okerra-Dashboard werfen und sicherstellen, dass in diesem Moment alles grün ist). Wenn eine Warnung eintrifft, reagieren wir.

Natürlich ist es möglich, einfach „informative“ Indikatoren beizubehalten (um das Bild des Netzwerks aus der Überwachung zu sehen), aber es wird alles getan, um einfach, einfach und schnell Indikatoren speziell für die automatische Überwachung und den Versand von Warnungen zu erstellen.

Der Zweck, für den Sie okerr einrichten, sind Benachrichtigungen, sodass Sie in einer Minute einen Indikator erstellen können, der ein Jahr lang „schlafen“ kann, nur Aktualisierungen akzeptiert, und wenn ein Jahr später etwas kaputt geht, leuchtet er auf und sendet eine Warnung. Die Minute, die Sie einmal damit verbracht haben, einen Indikator zu erstellen, hat sich ausgezahlt; Sie haben sofort und vor allen anderen von dem Problem erfahren. Es ist möglich, dass sie das Problem behoben haben, bevor es jemand bemerkt hat. Was schnell hochgehoben wird, gilt nicht als gefallen!

Sicherheit

Es wäre schade, wenn Sie eine Überwachung einrichten würden, um die Zuverlässigkeit zu erhöhen, aber dadurch werden Sie über das Netzwerk angegriffen und es gibt eine ganze Reihe von Netzwerkschwachstellen in verschiedenen Überwachungstools (Zabbix, Nagios).

Agent (okerrmod aus Paket okerrupdate) läuft auf dem System kein Netzwerkserver, sondern ein Client. Daher gibt es keine zusätzlichen offenen Ports auf dem überwachten Server, der Client funktioniert problemlos hinter einer Firewall oder NAT und ist sehr schwer (ich würde sagen „unmöglich“) über das Netzwerk zu hacken, da er im Prinzip nicht auf das Netzwerk lauscht Steckdose.

Vollständige Überwachungsabdeckung

Unsere Regel ist nun, dass wir von okerr über alle technischen Probleme erfahren. Wenn plötzlich gegen die Regel verstoßen wird (okerr hat nicht vor dem bevorstehenden Eintreten gewarnt (sofern dies möglich ist) oder dass es bereits eingetreten ist), fügen wir Kontrollen zu okerr hinzu.

Externe Kontrollen

Ein typisches Set:

  • Klingeln
  • http-Status
  • Überprüfung der Gültigkeit und Aktualität des SSL-Zertifikats (warnt, wenn es bald abläuft)
  • Öffnen Sie den TCP-Port und setzen Sie darauf ein Banner
  • http grep (die Seite darf keinen bestimmten Text enthalten)
  • sha1-Hash, um Seitenänderungen abzufangen.
  • DNS (DNS-Eintrag muss einen bestimmten Wert haben)
  • WHOIS (warnt, wenn die Domain bald kaputt geht)
  • Antispam-DNSBL (Hostprüfung anhand von mehr als 50 Antispam-Blacklists gleichzeitig)

Interne Kontrollen

Auch ein ziemlich standardmäßiges Set (aber leicht erweiterbar).

  • df (freier Speicherplatz)
  • Durchschnittslast
  • opentcp (offene TCP-Listening-Sockets – benachrichtigt, wenn etwas gestartet oder abgestürzt ist)
  • Betriebszeit – nur Betriebszeit auf dem Server. Benachrichtigt, wenn es heruntergefahren ist (d. h. der Server ist überlastet)
  • client_ip
  • dirsize – Wir verwenden es, um zu verfolgen, wann die Rootfs unserer virtuellen Maschinen die zulässige Größe überschreiten, ohne strenge Einschränkungen einzuführen, und um die Größe der Home-Verzeichnisse der Benutzer zu überwachen
  • empty und nonempty – Überwacht Dateien, die leer (oder nicht leer) sein sollten. Beispielsweise sollte das Fehlerprotokoll des okerr-Servers selbst leer sein, und wenn überhaupt eine Zeile darin enthalten ist, erhalte ich eine Benachrichtigung und überprüfe diese. Aber mail.log auf dem Mailserver sollte NICHT leer sein (N Minuten nach der Rotation). Und manchmal war es bei uns nach einem Systemupdate leer, wenn logrotate rsyslog nicht korrekt neu starten konnte.
  • Zeilenanzahl – Anzahl der Zeilen in der Datei (wie wc -l). Wir verwenden es als weicheren Ersatz für empty, wenn das Fehlerprotokoll zwar immer noch wachsen kann, aber nur langsam (z. B. trifft der Googlebot auf einige geschlossene Seiten). Es gibt ein Limit von 2 Zeilen pro 20 Minuten. Liegt der Wert höher, erfolgt eine Warnung

Interessante interne Kontrollen

Wenn Sie bisher „diagonal“ gelesen haben, wird es jetzt interessanter, genauer zu lesen.

Sicherungen

Überwacht Backups im Verzeichnis. Unsere Sicherungsdateien haben Namen wie „ServerName-20200530.tar.gz“. Für jeden Server in okerr wird der Indikator ServerName-DATE.tar.gz erstellt (das tatsächliche Datum wechselt in die Zeile „DATE“). Das Vorhandensein eines neuen Backups und seine Größe werden ebenfalls überwacht (es darf beispielsweise nicht weniger als 90 % des vorherigen Backups betragen).

Was muss getan werden, damit ein neues Backup nachverfolgt wird, nachdem wir mit der Erstellung und dem Ablegen in diesem Verzeichnis begonnen haben? Nichts! Dies ist ein sehr praktischer Ansatz, wenn Sie „nichts“ tun müssen, weil:

  • „Nichts“ zu tun geht ziemlich schnell und spart Zeit
  • Es ist schwer zu vergessen, „nichts“ zu tun
  • Es ist schwierig, mit einem Fehler „nichts“ falsch zu machen. Nichts ist die zuverlässigste Methode

Wenn plötzlich keine neuen Sicherungsdateien mehr angezeigt werden, wird eine Warnung angezeigt. Wenn Sie beispielsweise einen der Server deaktiviert haben und keine Backups mehr vorhanden sein sollten, müssen Sie den Indikator löschen (über die Weboberfläche oder von der Shell über die API).

maxfilesz

Verfolgt die Größe der größten Dateien (normalerweise: /var/log/*). Auf diese Weise können Sie unvorhersehbare Probleme abfangen, z. B. Brute-Force-Passwörter oder das Versenden von Spam über den Server.

runstatus/runline

Dies sind zwei wichtige Proxy-Module zum Ausführen anderer Programme auf dem Server. Runstatus meldet den Programm-Exit-Code an den Indikator. okerr benötigt beispielsweise kein Modul, um zu überprüfen, ob systemd-Dienste ausgeführt werden. Dies erfolgt über runstatus (siehe unten). Runline – meldet dem Server die Zeile, die das Programm erzeugt. Zum Beispiel, temp_RUN="cat /sys/class/thermal/thermal_zone0/temp" In der Runline-Konfiguration auf unserem Server wird ein Indikator servername:temp mit der Prozessortemperatur erstellt.

SQL

Führt eine numerische Abfrage an MySQL aus und meldet das Ergebnis an den Indikator. In einem einfachen Fall können Sie beispielsweise „SELECT 1“ ausführen – dadurch wird überprüft, ob das DBMS als Ganzes funktioniert.

Eine viel interessantere Anwendung ist jedoch beispielsweise die Verfolgung der Anzahl der Bestellungen in einem Online-Shop. Wenn Sie wissen, dass Sie 100 oder mehr Bestellungen pro Stunde haben, können Sie die Mindestgrenze auf 100 oder 80 festlegen. Wenn Ihre Verkäufe dann plötzlich sinken, erhalten Sie eine Benachrichtigung und können dies herausfinden.

Beachten Sie, dass es keine Rolle spielt, aus welchem ​​unvorhersehbaren Grund dies geschah:

  • Der Server ist einfach nicht verfügbar (stromlos oder ohne Netzwerk), und die Warnung kam von der Tatsache, dass der Indikator „verrottet“ war.
  • Der Server ist mit etwas überlastet, er arbeitet langsam oder Pakete gehen verloren, es ist für Benutzer unpraktisch und sie verlassen den Server, ohne Einkäufe zu tätigen
  • Der Server ist in den Spam-Listen enthalten und E-Mails von ihm werden nicht akzeptiert, Benutzer können sich nicht registrieren
  • Das Budget für die Werbekampagne ist aufgebraucht, die Banner drehen sich nicht.

Die Gründe dafür können vielfältig sein und sind nicht alle im Voraus vorhersehbar und technisch schwer nachzuvollziehen. Sie können jedoch den letzten Parameter (Anordnungen) bequem überwachen und daraus schließen, dass die Situation verdächtig ist und eine Behandlung verdient.

Logische Indikatoren

Ermöglicht die Verwendung boolescher Ausdrücke (Python-Syntax) über ein Modul bewerten(Artikel über Habré). Daten aus dem Projekt und seinen Indikatoren stehen zur Darstellung zur Verfügung. Im Kapitel über die SQL-Prüfung oben ist Ihnen beispielsweise möglicherweise eine Schwachstelle aufgefallen: Tagsüber können wir 100 Verkäufe pro Stunde erzielen, nachts jedoch 20, und das ist häufig und kein Problem. Was soll ich machen? Der Indikator wird nachts ständig in Panik geraten.

Sie können zwei Indikatoren erstellen, Tag und Nacht. Stellen Sie beide auf „stumm“ (es werden keine Benachrichtigungen gesendet). Und erstellen Sie einen logischen Indikator, der erfordert, dass der Tagindikator vor 20:00 Uhr in Ordnung ist, und nach 20:00 Uhr reicht es aus, wenn der Nachtindikator in Ordnung ist.

Ein weiteres Beispiel für die Verwendung eines logischen Indikators ist Eskalation. Beispielsweise meldet sich ein Projektmanager von Benachrichtigungen ab (er muss dies nicht tun, Administratoren sollten auf normale Probleme reagieren), abonniert jedoch einen logischen Indikator, der rot wird, wenn ein Indikator im Projekt nicht innerhalb der vorgegebenen Zeit korrigiert wird.

Außerdem ist es möglich, die zulässige Arbeitszeit beispielsweise von 3 bis 5 Uhr morgens festzulegen. Es ist uns egal, ob Server und Websites in dieser Zeit abstürzen. Aber um 5:00 Uhr müssen sie arbeiten. Wenn sie zu einem anderen Zeitpunkt nicht funktionieren, alarmieren Sie sie. Mit dem logischen Indikator können Sie auch die Serverredundanz berücksichtigen. Wenn Sie über 5 Webserver verfügen, können Administratoren jederzeit 1–2 Server abschalten. Wenn jedoch weniger als 3 von 5 Servern im Kampf sind, wird eine Warnung angezeigt.

Bei den obigen Beispielen handelt es sich nicht um oker-Funktionen, es handelt sich nicht um einige Funktionen, die aktiviert und konfiguriert werden müssen. Okerra verfügt nicht über alle diese Funktionen, aber es gibt ein logisches Modul, mit dem Sie diese Funktionalität implementieren können (ungefähr wie in einer Programmiersprache – wenn wir arithmetische Operatoren haben, dann brauchen wir keine spezielle Funktion zur Berechnung der 20 % Mehrwertsteuer Von der Sprache her können Sie es jederzeit selbst machen und an Ihre Bedürfnisse anpassen).

Logic Indicator ist wahrscheinlich eines der wenigen relativ komplexen Themen in okerr, aber die gute Nachricht ist, dass Sie es erst beherrschen müssen, wenn Sie es müssen. Gleichzeitig erweitern sie die Möglichkeiten erheblich und halten das System selbst recht einfach.

Hinzufügen eigener Schecks

Ich möchte wirklich die Idee vermitteln, dass okerr kein Satz von Tausenden vorgefertigten Schecks für alle Gelegenheiten ist, sondern im Gegenteil – vor allem – eine einfache Engine mit einer einfachen Möglichkeit, eigene Schecks zu erstellen. Das Erstellen eigener Checks in okerr ist keine Aufgabe für Hacker, System-Mitentwickler oder zumindest fortgeschrittene okerr-Benutzer, sondern eine machbare Aufgabe für jeden Administrator, der Linux vor einem Monat zum ersten Mal installiert hat.

Die Überprüfung der Mindestlöhne erfolgt über das Modul Laufstatus:

Diese Zeile in der config Laufstatus benachrichtigt Sie, wenn /bin/true plötzlich nicht startet oder etwas anderes als 0 zurückgibt.

true_OK=/bin/true

Nur eine Zeile – und hier sind wir schon ein bisschen erweitert haben Funktionalität okerr.

Auch eine solche Prüfung hat bereits ihren Wert: Wenn Ihr Server plötzlich abstürzt, wird der entsprechende Indikator auf dem okerr-Server nicht rechtzeitig aktualisiert und nach Ablauf der Zeit erscheint eine Warnung.

Diese Prüfung benachrichtigt Sie, dass der Apache2-Server abgestürzt ist (naja, man weiß ja nie...):

apache_OK="systemctl is-active --quiet apache2"

Wenn Sie also eine beliebige Programmiersprache beherrschen und zumindest Shell-Skripte schreiben können, können Sie bereits eigene Prüfungen hinzufügen.

Schwieriger: Sie können (in jeder Sprache) Ihr eigenes Modul für okerrmod schreiben. Im einfachsten Fall sieht es so aus:

#!/usr/bin/python3

print("STATUS: OK")

Ist es nicht sehr schwierig? Das Modul muss die Prüfung selbst durchführen und die Ergebnisse auf STDOUT ausgeben. Ein komplexeres Modul ergibt beispielsweise Folgendes:

$ okerrmod --dump df
NAME: pi:df-/
TAGS: df
METHOD: numerical|maxlim=90
DETAILS: 49.52%, 13.9G/28.2G used, 13.0G free
STATUS: 49.52

NAME: pi:df-/boot
TAGS: df
METHOD: numerical|maxlim=90
DETAILS: 84.32%, 53.1M/62.9M used, 9.9M free
STATUS: 84.32

Es aktualisiert mehrere Indikatoren gleichzeitig (getrennt durch eine Leerzeile), erstellt sie bei Bedarf, zeigt Verifizierungsdetails und ein Tag an, anhand dessen Sie die erforderlichen Indikatoren im Dashboard leicht finden können.

Telegram

Es gibt einen Telegram-Bot @OkerrBot. Sie müssen Ihr Telefon nicht mit separaten Anwendungen überladen (mir gefällt nicht, dass Sie für Pyaterochka eine Anwendung mit Karte benötigen, für Lenta eine andere, für MTS eine dritte und so weiter für alle, alle, alle). Ein Telegramm genügt. Über Telegram können Sie sofort Benachrichtigungen erhalten, den Status des Projekts überprüfen und einen Befehl zur erneuten Überprüfung aller problematischen Indikatoren erteilen. Wir verließen das Theater/Flugzeug, blieben zwei Stunden lang nicht am Puls der Zeit, schalteten das Telefon ein, drückten eine Taste im Chatbot und stellten sicher, dass alles in Ordnung war.

Statusseiten

Heutzutage sind Statusseiten fast ein Muss für jedes Unternehmen, das über IT verfügt, einen verantwortungsvollen Umgang mit Zuverlässigkeit hat und seine Kunden/Benutzer mit Respekt behandelt.

Stellen Sie sich eine Situation vor: Ein Benutzer möchte etwas tun, Informationen anzeigen oder eine Bestellung aufgeben, und etwas funktioniert nicht. Er weiß nicht, was los ist, auf wessen Seite das Problem liegt und wann es gelöst wird. Vielleicht hat Ihr Unternehmen einfach eine nicht funktionierende Website? Oder ist es vor sechs Monaten kaputt gegangen und wird in zwei Jahren repariert? Aber Sie müssen jetzt einen Kühlschrank kaufen, er ist bereits im Warenkorb... Und eine ganz andere Sache ist es, wenn jemand sieht, dass mit Ihnen etwas nicht stimmt (zumindest ist klar, dass das Problem nicht auf seiner Seite liegt), dass die Das Problem wurde entdeckt, Sie arbeiten bereits daran und haben vielleicht sogar den ungefähren Zeitpunkt für die Korrektur notiert. Der Benutzer kann sich anmelden und eine E-Mail-Benachrichtigung erhalten, wenn das Problem behoben ist, und er kann tun, was er möchte (einen Kühlschrank kaufen).

Übersicht über das Okerr-Hybridüberwachungssystem

Probleme und Ausfallzeiten passieren jedem. Aber Nutzer und Partner vertrauen eher denen, die hier transparenter und verantwortungsvoller vorgehen.

Hier Überprüfung von 10 anderen Projekten, mit denen Sie Statusseiten erstellen können. Hier finden Sie Beispiele dafür, wie diese Projektseiten aussehen Python и Dropbox. okerr-Statusseite.

Failover

Um diesen Artikel nicht noch länger zu machen, verweise ich noch einmal auf meinen vorherigen Artikel - Einfaches Failover für eine Website . Wenn Sie einen doppelten Server erstellen und Failover verwenden können, kommt es im Grunde nicht zu langen Ausfallzeiten – sobald ein Problem erkannt wird, werden Benutzer automatisch auf einen funktionierenden Backup-Server umgeleitet. Und es scheint mir, dass dies ein sehr interessantes, helles Feature ist, das selten irgendwo verfügbar ist.

Niedrige Systemanforderungen

Für okerr-Server verwenden wir Maschinen mit RAM ab 2 GB. Für Netzwerksensoren reichen sogar 512 MB. Der Client-Anteil ist im Allgemeinen nahezu Null. (Plastiktüte okerrupdate wiegt 26 KB, erfordert aber Python3 und Standardbibliotheken). Der Client wird über ein Cron-Skript ausgeführt, sodass kein dauerhafter Speicherverbrauch vorliegt. Zu den von uns überwachten Maschinen gehören Sensoren (supergünstiges VPS mit 512 MB RAM) und ein Raspberry Pi. Es ist auch ohne den Client-Teil möglich Senden Sie Updates über Curl! (siehe unten)

Wenn man das berücksichtigt – okerr, wahrscheinlich am meisten kostenlos Überwachungssystem von den verfügbaren, denn selbst um ein anderes kostenloses Open-Source-System wie Zabbix oder Nagios zu verwenden, müssen Sie ihm Ressourcen (Server) zuweisen, und das ist bereits Geld. Darüber hinaus sind noch einige Serverwartungen erforderlich. Mit okerr kann dieser Teil entfernt werden. Oder Sie müssen es nicht entfernen und Ihren eigenen Server verwenden, je nachdem, was Ihnen am besten gefällt.

API und Integration in proprietäre Software

Einfache und offene Architektur. okerr hat eine ziemlich einfache API, mit dem man leicht arbeiten kann. Müssen Sie 1000 Indikatoren erstellen? Ein Shell-Skript mit 3-4 Zeilen erledigt dies. Müssen Sie 1000 Indikatoren neu konfigurieren? Es ist auch sehr einfach. Wir möchten zum Beispiel alle unsere HTTPS-Zertifikate von einem russischen Sensor noch einmal überprüfen:

#!/bin/sh

for indicator in `okerrclient --api-filter sslcert`
do
    echo set location for $indicator
    okerrclient --api-set location=ru retest=1 --name $indicator
done

Sie können den Indikator mit unserem Client-Modul aktualisieren, auch ohne, einfach über 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/

Sie können Indikatoren direkt aus Ihrem Programm aktualisieren. Senden Sie beispielsweise Heartbeat-Signale, damit okerr weiß, dass es ausgeführt wird, und einen Alarm auslöst, wenn es abstürzt oder einfriert. Okerr-Komponenten tun übrigens genau das – okerr überwacht sich selbst und Probleme in fast jedem Modul werden erkannt und eine Warnung über das Problem generiert. (Und wenn dies „fast“ der Fall ist, werden sie von einem anderen Server abgeglichen)

Hier ist der Code (vereinfacht) in unserem Telegram-Bot:

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))

Es gibt eine Bibliothek zum Aktualisieren von Indikatoren aus Python-Programmen okerrupdate, für alle anderen Sprachen gibt es keine Bibliotheken, aber Sie können entweder das okerrupdate-Skript aufrufen oder eine HTTP-Anfrage an den okerr-Server stellen.

Wie okerr uns hilft

Okerr hat unser Leben verändert. Tatsächlich. Vielleicht könnte ein anderes Überwachungssystem das Gleiche tun, aber die Arbeit mit okerr ist für uns einfach und unkompliziert und es verfügt über alle Funktionen, die wir brauchten (wir haben hinzugefügt, was es nicht hatte). Übrigens, wenn einige Funktionen fehlen, fragen Sie nach und ich werde sie hinzufügen (ich verspreche es nicht, aber ich möchte, dass okerr das beste Überwachungssystem für kleine bis mittlere Projekte ist). Oder noch besser: Fügen Sie es selbst hinzu – es ist ganz einfach.

Wir haben es geschafft, nach dem Grundsatz zu leben: „Lernen Sie alles über alle Probleme von der Kerra.“ Wenn plötzlich ein Problem auftritt, von dem wir nichts von okerr erfahren haben, fügen wir okerr einen Haken hinzu. (In diesem Fall meine ich mit „wir“ uns als Benutzer des Systems, nicht als Mitentwickler.) Anfangs kam das häufig vor, mittlerweile ist es sehr selten geworden.

Überwachung

Über okerr überwachen wir die Protokollgrößen auf allen Servern. Es ist natürlich unmöglich, jede Zeile des Protokolls sorgfältig mit den Augen zu lesen, aber die bloße Beobachtung der Wachstumsrate bringt schon viel. Dadurch haben wir Spam-Mails und Brute-Force-Passwortsuchen entdeckt, und wenn einige der Anwendungen „verrückt“ werden, funktioniert bei ihnen etwas nicht und sie wiederholen es immer wieder (jedes Mal fügen sie dem Protokoll ein paar Zeilen hinzu). ).

SSL-Zertifikate. Fast unmittelbar nach dem Start LetsEncrypt Unser Kunde begann, seinen Kunden (ungefähr tausend davon) kostenlose SSL-Zertifikate zur Verfügung zu stellen. Und es stellte sich heraus, dass es die Hölle für die Verwaltung war! Tatsache ist, dass Websites „live“ sind, Kunden sie regelmäßig auffordern, etwas zu tun, Programmierer tun es. Sie können die Site beispielsweise völlig frei auf ein anderes DocumentRoot übertragen. Oder fügen Sie der Virtualhost-Konfiguration ein bedingungsloses Rewrite hinzu. Danach bricht die automatische Erneuerung der Zertifikate naturgemäß zusammen. Jetzt haben wir alle SSL-Hosts automatisch über ein weiteres unserer nützlichen Dienstprogramme aus dem Paket zu okerr hinzugefügt a2conf. Lasst uns einfach starten a2okerr.py – und wenn mehrere neue Sites auf dem Server erscheinen, werden sie automatisch in okerr angezeigt. Wenn das Zertifikat aus irgendeinem Grund drei Wochen vor Ablauf des Zertifikats plötzlich nicht erneuert wird, wissen wir Bescheid und werden herausfinden, warum es nicht aktualisiert wird, so ein Hund. a2certbot.py aus demselben Paket - es hilft dabei sehr (es überprüft sofort die wahrscheinlichsten Probleme - und schreibt, was gut überprüft wurde und wo es am wahrscheinlichsten ein Problem gibt).

Wir überwachen das Ablaufdatum aller unserer Domains. Und alle unsere Mailserver, die E-Mails versenden, werden auch anhand von über 50 verschiedenen Blacklists überprüft. (Und manchmal fallen sie hinein). Wussten Sie übrigens, dass auch Google-Mailserver auf der schwarzen Liste stehen? Nur zum Selbsttest haben wir mail-wr1-f54.google.com zu den überwachten Servern hinzugefügt und es steht immer noch auf der schwarzen Liste von SORBS! (Hier geht es um den Wert von „Anti-Spammer“)

Backups – ich habe oben bereits geschrieben, wie einfach man diese mit okerr überwachen kann. Wir überwachen jedoch sowohl die neuesten Backups auf unserem Server als auch (mithilfe eines separaten Dienstprogramms, das okerr verwendet) die Backups, die wir auf Amazon Glacier hochladen. Und ja, es kommt von Zeit zu Zeit zu Problemen. Kein Wunder, dass sie zusahen.

Wir verwenden den Eskalationsindikator. Es zeigt an, ob ein Problem schon seit längerer Zeit nicht behoben wurde. Und wenn ich einige Probleme löse, kann ich sie manchmal vergessen. Eskalation ist eine gute Erinnerung, auch wenn Sie sich selbst überwachen.

Insgesamt glaube ich, dass die Qualität unserer Arbeit um eine Größenordnung gestiegen ist. Es gibt fast keine Ausfallzeiten (oder der Kunde hat keine Zeit, es zu bemerken. Nur psst!), während der Arbeitsaufwand geringer und die Arbeitsbedingungen ruhiger geworden sind. Wir sind von der Notfallarbeit mit dem Ausbessern von Löchern mit Klebeband zu einer ruhigen und maßvollen Arbeit übergegangen, bei der viele Probleme im Voraus vorhergesagt werden und Zeit bleibt, sie zu verhindern. Sogar aufgetretene Probleme lassen sich jetzt leichter beheben: Erstens erfahren wir davon, bevor Kunden in Panik geraten, und zweitens kommt es oft vor, dass das Problem mit kürzlichen Arbeiten zusammenhängt (während ich eine Sache erledigt habe, habe ich eine andere kaputt gemacht) – Es ist also heiß. Es ist für Spuren einfacher, damit umzugehen.

Aber es gab noch einen anderen Fall...

Wussten Sie, dass im beliebten Debian 9 (Stretch) ein so beliebtes Paket wie phpmyadmin immer noch (seit vielen Monaten!) im verwundbaren Status ist? (CVE-2019-6798). Als die Sicherheitslücke auftauchte, haben wir sie schnell auf verschiedene Weise behoben. Aber ich habe die Überwachung der Security-Tracker-Seite in okerr eingerichtet, um zu wissen, wann eine „schöne“ Lösung herauskommt (über die SHA1-Summe des Inhalts). Der Indikator zuckte bei mir mehrmals, die Seite wechselte, aber wie Sie sehen, zeigt er immer noch (seit Januar 2019!) nicht an, dass das Problem gelöst wurde. Vielleicht kennt übrigens jemand das Problem, dass ein so wichtiges Paket noch über ein Jahr lang angreifbar ist?

Ein anderes Mal in einer ähnlichen Situation: Nach einer Sicherheitslücke in SSH war es notwendig, alle Server zu aktualisieren. Und wenn Sie eine Aufgabe festlegen, müssen Sie die Ausführung kontrollieren. (Untergebene neigen dazu, Missverständnisse zu verstehen, zu vergessen, verwirrt zu sein und Fehler zu machen). Deshalb haben wir zunächst auf allen Servern eine SSH-Versionsprüfung zu okerr hinzugefügt und über okerr sichergestellt, dass Updates auf allen Servern ausgerollt wurden. (Praktisch! Ich habe diesen Indikatortyp gewählt, und Sie können sofort erkennen, welcher Server welche Version hat.) Als wir sicher waren, dass die Aufgabe auf allen Servern abgeschlossen wurde, haben wir die Indikatoren entfernt.

Es kam ein paar Mal vor, dass ein bestimmtes Problem auftauchte und dann von selbst wieder verschwand. (wahrscheinlich jedem bekannt?). Wenn Sie es bemerken, wenn Sie es überprüfen – und es gibt nichts zu überprüfen – funktioniert bereits alles gut. Doch dann geht es wieder kaputt. Dies ist uns beispielsweise bei Produkten passiert, die wir auf den Amazon Marketplace (MWS) hochgeladen haben. Irgendwann war der geladene Bestand falsch (falsche Warenmengen und falsche Preise). Wir haben es herausgefunden. Aber um es herauszufinden, war es wichtig, das Problem sofort herauszufinden. Leider ist MWS, wie alle Amazon-Dienste, etwas langsam, sodass es immer zu Verzögerungen kam, aber dennoch konnten wir den Zusammenhang zwischen dem Problem und den Skripten, die es verursachen, zumindest grob erfassen (wir haben es überprüft, stecken fest Ich habe es an den okerr gesendet und es überprüft und sofort eine Warnung erhalten.

Ein interessanter Fall wurde kürzlich von einem großen und teuren europäischen Hoster in die Sammlung aufgenommen, den unser Kunde nutzt. Plötzlich verschwanden ALLE unsere Server vom Radar! Erstens bemerkte der Kunde selbst (schneller als Okerra!), dass die Website, mit der er arbeitete, nicht geöffnet wurde, und erstellte ein Ticket dafür. Aber nicht nur eine Seite ist ausgefallen, sondern alle! (Natasha, wir haben alles fallen lassen!). Hier begann Okerr, lange Fußwickel mit allen für ihn aufleuchtenden Indikatoren zu senden. Panik, Panik, wir laufen im Kreis (was können wir sonst tun?). Dann stieg alles. Es stellte sich heraus, dass im Rechenzentrum routinemäßige Wartungsarbeiten durchgeführt wurden (alle paar Jahre) und wir hätten natürlich gewarnt werden müssen. Aber ihnen ist ein Problem passiert und sie haben uns nicht gewarnt. Nun ja, mehr Herzinfarkte, weniger Herzinfarkte. Aber nachdem alles wiederhergestellt ist, müssen Sie alles noch einmal überprüfen! Ich kann mir nicht vorstellen, wie ich das mit meinen Händen machen würde. Okerr hat alles in wenigen Minuten getestet. Es stellte sich heraus, dass die meisten Server einfach vorübergehend nicht verfügbar waren, aber sie funktionierten. Einige waren überlastet, standen aber auch so auf, wie sie sollten. Von all den Verlusten haben wir zwei Backups verloren, die laut der Krone hätten erstellt und geladen werden sollen, während diese volle Banane im Gange war. Ich habe mir nicht einmal die Mühe gemacht, sie zu erstellen, nur einen Tag später kam die Meldung, dass alles in Ordnung sei und Backups erschienen seien. Dieses Beispiel gefällt mir wirklich gut, weil sich okerr in einer Situation als sehr nützlich erwiesen hat, über die wir vorher noch nicht einmal nachgedacht hatten, aber das ist der Zweck der Überwachung – dem Unvorhersehbaren zu widerstehen.

Für Okerr-Sensoren verwenden wir das günstigste Hosting (wobei Qualität und Zuverlässigkeit nicht wichtig sind, sie versichern sich gegenseitig). Wir haben also kürzlich ein sehr gutes und supergünstiges Hosting gefunden, die Benchmarks sind großartig. Aber... manchmal stellt sich heraus, dass ausgehende Verbindungen von der virtuellen Maschine über eine andere (benachbarte) IP erfolgen. Wunder. Client_ip-Modul mit https://diagnostic.opendns.com/myip bekommt die falsche IP. Und aus den Serverprotokollen des Indikators geht hervor, dass das Update auch von dieser Nachbar-IP kam. Kümmern wir uns jetzt um den Support. Es ist gut, dass wir das in Friedenszeiten bemerkt haben. Aber es kommt zum Beispiel oft vor, dass Zugriffe gemäß der IP-Whitelist registriert werden – und wenn der Server manchmal kurzzeitig so blinkt – kann man sehr lange versuchen, dieses Problem abzufangen.

Und noch etwas: Da es sich um VPS-Hosting handelt, verwenden wir immer kostengünstige Hosting-Anbieter (Hetzner, OVH, Scaleway). Es gefällt mir sowohl hinsichtlich der Benchmarks als auch der Stabilität sehr gut. Auch für andere Projekte nutzen wir das deutlich teurere Amazon EC2. Dank okerr haben wir also unsere eigene fundierte Meinung. Beide fallen. Und ich würde nicht sagen, dass sich günstige Hostings wie Hetzner über den langen Zeitraum unserer Beobachtungen als merklich weniger stabil erwiesen haben als EC2. Wenn Sie also nicht an andere Amazon-Funktionen gebunden sind, warum sollten Sie dann mehr bezahlen? 🙂

Was kommt als nächstes?

Wenn ich Sie zu diesem Zeitpunkt noch nicht von Okerr abgeschreckt habe, dann versuchen Sie es! Sie können direkt zu diesem Link gelangen okerr Demokonto (Klick jetzt!) Beachten Sie jedoch, dass es nur ein Demokonto für alle gibt. Wenn Sie also etwas tun, kann es sein, dass jemand anderes im selben Konto Sie gleichzeitig stört. Oder (besser) registrieren Sie sich über den Link zu Offsite okerr - alles ist einfach, ohne SMS. Wenn Sie Ihre echte E-Mail-Adresse nicht verwenden möchten, können Sie eine Einweg-E-Mail-Adresse wie Mailinator verwenden (ich empfehle). getnada.com). Solche Konten können im Laufe der Zeit gelöscht werden, für Tests sind sie jedoch in Ordnung.

Nach der Registrierung werden Sie aufgefordert, eine Schulung zu absolvieren (einige nicht sehr schwierige Schulungsaufgaben auszuführen). Die anfänglichen Limits sind sehr gering, aber für das Training oder einen Server reichen sie aus. Nach Abschluss der Schulung werden die Grenzwerte (z. B. die maximale Anzahl an Indikatoren) erhöht.

Aus der Dokumentation – zunächst einmal WIKI auf der Serverseite und auf dem Client (okerrupdate-Wiki). Aber wenn etwas unklar ist, schreiben Sie an support (at) okerr.com oder hinterlassen Sie ein Ticket – wir werden versuchen, alles schnell zu lösen.

Wenn Sie es ernsthaft nutzen und diese erhöhten Limits nicht ausreichen, schreiben Sie an den Support und wir werden es (kostenlos) erhöhen.

Möchten Sie den Okerr-Server auf Ihrem Server installieren? Hier okerr-dev-Repository. Wir empfehlen die Installation auf einer sauberen virtuellen Maschine, dann können Sie dies einfach mit einem Installationsskript durchführen. Auf Ihrer virtuellen Maschine - keine Einschränkungen :-). Auch hier gilt: Sollte etwas passieren, werden wir immer versuchen zu helfen.

Wir wollen, dass dieses Projekt durchstartet, damit die Welt dank uns zuverlässiger wird. Dank freier Software und Dienste ist die Welt freundlicher geworden und entwickelt sich dynamischer. Quellen können im kostenlosen GitHub gespeichert werden, für E-Mails können Sie das kostenlose Gmail verwenden. Wir nutzen kostenlos Freshworks zur Unterstützung. Für all dies müssen Sie nicht für Server bezahlen, Sie müssen keine Downloads und Konfigurationen durchführen und Sie müssen keine verschiedenen Betriebsprobleme lösen. Jedes neue Projekt, jedes Team verfügt sofort über Mail, Repositories und CRM. Und das alles in sehr hoher Qualität und kostenlos und sofort. Wir möchten, dass dies auch für die Überwachung gilt – kleine Unternehmen und Projekte könnten okerr kostenlos nutzen und selbst in der Geburts- und Wachstumsphase über die Zuverlässigkeit seriöser Projekte für Erwachsene verfügen.

Source: habr.com