Ich beschloss, meine Geschichte zu teilen. Vielleicht findet sogar jemand diese Budgetlösung für ein bekanntes Problem nützlich.
Als ich jung und heiß war und nicht wusste, wo ich meine Energie einsetzen sollte, beschloss ich, ein bisschen freiberuflich zu arbeiten. Es gelang mir, die Bewertung schnell zu erhalten, und ich fand einige Stammkunden, die mich baten, ihre Server kontinuierlich zu unterstützen.
Das erste, woran ich dachte, war die Notwendigkeit der Überwachung. Ich beschloss, es als kluge Leute zu tun, nicht das Rad neu zu erfinden, sondern vorgefertigte Optionen wie Munin oder Zabbix zu prüfen. Es wurde jedoch sofort festgestellt, dass die Webversion eine gute Internetverbindung erfordert, insbesondere wenn Sie sie zuerst von Ihrem Telefon aus öffnen. Wenn Sie sich in der Natur abseits der Stadt entspannen, ist es schwierig, eine stabile Verbindung herzustellen. Daher wurde eine Konsolenüberwachungsoption ausgewählt.
Atop und der atop Log Reader atopsar haben mir bei der Konsolenüberwachung sehr geholfen. Sie wurden bereits auf habr erwähnt,
oben wurde sogar auseinander genommen , aber über atopsar wurde fast nichts gesagt.
Installation
Sehr einfache Installation, nur drei Teams.
#Centos
yum install atop
# Debian / Ubuntu
apt-get install atop
Als Nächstes können Sie den Überwachungsvorgang selbst konfigurieren oder die Standardeinstellungen verwenden.
# Debian / Ubuntu / Centos
/etc/default/atop
Standarddatei:
#cat /etc/default/atop INTERVAL=60 #, , 10 LOGPATH="/var/log/atop" # OUTFILE="$LOGPATH/daily.log" #
Zum Autorun hinzufügen
# Debian / Ubuntu / Centos
systemctl enable atop
Als Dämon ausführen
# Debian / Ubuntu / Centos
systemctl start atop
Für Faulheit in einem Team versammelt
#Centos
yum install atop && systemctl enable atop && systemctl start atop
# Debian / Ubuntu
apt-get install atop && systemctl enable atop && systemctl start atop
Atopsar
Neben atop ist auch atopsar installiert, ein praktischer Konsolenanalysator für binäre Protokolle, die vom atop-Daemon ausgeführt werden. Natürlich können Sie die Protokolle auf sich selbst lesen, aber dies ist nicht so praktisch, wenn Sie ein großes Zeitintervall erfassen möchten.
Ein kleines Bildungsprogramm zur Arbeit von Atopsar.
Wenn atopsar ohne Schlüssel startet, öffnet es das Protokoll für heute und zeigt die Last auf jedem Kern einzeln und die IDL-Zeichenfolge für alle Kernel an.
Die Schlüssel, die ich benutze, sind:
-A = Alle Informationen aus dem Protokoll drucken
-c = Informationen zur Auslastung der Prozessorkerne anzeigen, der Standardschlüssel
-m = RAM und Swap-Last
-d = Festplattenaktivität
-O = Top 3 CPU-Ladevorgänge
-G = Top 3 RAM-Ladevorgänge
-D = Top 3 Festplattenladevorgänge
-N = Top 3 Netzwerklastprozesse
-r = Geben Sie den Pfad zu dem Protokoll an, das Sie lesen möchten, wenn Sie die Last der letzten Tage anzeigen müssen
-b = Zeit zum Starten der Ausgabe
-e = Zeit zum Beenden der Ausgabe
-M = erstellt am Ende eine zusätzliche Spalte, in der die Kritikalität der Zeile markiert ist (+ es gibt eine Last, * - kritische Last)
Dank der Überwachung können wir die Ursache für ein falsches Serververhalten jederzeit verstehen.
Benachrichtigungen
Es gibt also eine Überwachung der Last, aber es ist immer noch nicht möglich, Probleme schnell zu finden und zu lösen. Wir benötigen Benachrichtigungen über das Problem.
Ich bin der einzige, der den Servern folgt, also muss ich benachrichtigen, wo ich es immer sehen kann und zumindest irgendwie darauf reagieren.
Am Anfang gab es SMS - schnell, zuverlässig, kostenlos. Aber dann vertuschten Mobilfunkbetreiber eine kostenlose SMS-Verteilung über ihre Gateways.
Post - lange Zeit kann es Probleme mit der Zustellung geben.
Messenger - muss am Telefon sein, Sie müssen Bots erstellen.
Als Ergebnis der Suche wurde der Telegramm-Messenger aufgrund seiner Einfachheit und bequemen Anwendung auf dem Telefon und dem Desktop ausgewählt.
Erstellt seinen Bot mit
Botfather .
Nachdem ich mehrere Skripte auf den Server gestellt habe, die die Auslastung des Servers (IDL, smartct usw.), das Vorhandensein von Fehlern wie "oom Killer", Fehler beim Erstellen eines Backups und andere Vorgänge, die gesteuert werden müssen, verfolgen.
Die Skripte sind ziemlich einfach in Bash geschrieben. Sie überprüfen beispielsweise LA und benachrichtigen, dass Load Averadge die Anzahl der Kerne auf dem Server überschritten hat.
if [ ${LA[0]} -gt 2000 ] || [ ${LA[1]} -gt 3000 ] || [ ${LA[2]} -gt 4000 ] then wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text= $ip LA $LAd" wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text=`top -b -n 1 | grep Cpu`" wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text= 5 `top -b -n 1 | grep -A 5 'PID USER' | tail -5`" fi
Die Einfachheit der Syntax bietet viele Anwendungsfälle (und jeder, der zumindest ein wenig Programmiersprache kennt, kann schreiben / hinzufügen).
Die einzige Einschränkung: Wenn sich der Server in Russland befindet (und Sie kein IPv6 auf dem Server haben), müssen Sie einen Proxy verwenden. Dazu müssen Sie zu Beginn des Skripts die Verbindungszeichenfolge beim Proxy registrieren:
export https_proxy=http://:@IP.:
Dies ist nicht das Ende
Sie gehen ruhig mit einem Rucksack hinter sich durch die Berge, machen eine Pause von der Zivilisation, und dann gibt das Telefon, das versehentlich die Verbindung hergestellt hat, eine Benachrichtigung über ein Problem aus, das auf Ihrem Server aufgetreten ist. Was zu tun ist? Eine ruhige Stimmung wurde vom Wind weggeblasen. Meine Frau anrufen und Befehle diktieren? Ha ha!
Es war dringend erforderlich, einen Weg zu finden, um die Probleme schnell und ohne die Verfügbarkeit eines guten Internets zu lösen. Hier wurde ich wieder vom Boten (# telegrammivi) gerettet. Ich brachte meinem Bot bei, nur mit mir zu kommunizieren und alle anderen zu ignorieren. Zusammen mit der Benachrichtigung über das Problem erhalte ich jetzt etwas mehr Daten, anhand derer ich verstehe, wer die Ursache des Problems ist, und ich kann versuchen, es aus der Ferne zu lösen. Es reicht aus, nur eine Nachricht an den Bot zu schreiben, das Telefon höher zu werfen, damit diese Nachricht verschwindet, und voila - der Bot hat Ihre Arbeit erledigt. So kann ich zum Beispiel einen unerwünschten Prozess beenden, den Dämon neu starten, die IP blockieren und so weiter.
Hier habe ich auch zukünftig notwendige Anfragen von Kunden übertragen, z. B. das dringende Zurücksetzen von Passwörtern an Benutzer (weil "Ahhh, wir können nicht zum Server gelangen, wir verlieren Millionen!"), Nach einem Benutzer suchen, der Zugriff auf den gewünschten Ordner hat, die Site ein- und ausschalten und andere . Natürlich ändere ich ständig die Funktionalität des Bots, da die Vorstellungskraft der Kunden manchmal unerwartet auftaucht und nicht von mir angefordert wird. Aber die Grundlegenden sind zufrieden.
Es gibt auch eine Version für VK, aber sie hat irgendwie keine Wurzeln geschlagen.
Jetzt reise ich ruhig und erkunde diese Welt, ohne Angst zu haben, dass dort etwas kaputt geht, und ich werde es nicht herausfinden oder reparieren können.