Ich habe beschlossen, meine Geschichte zu teilen. Vielleicht kann jemand von dieser kostengünstigen Lösung für ein bekanntes Problem profitieren.
Als ich jung und voller Energie war und nicht wusste, wohin mit meinem Elan, habe ich beschlossen, etwas freiberuflich zu arbeiten. Es gelang mir schnell, ein gutes Rating zu erreichen, und ich fand ein paar feste Kunden, die mich baten, ihre Server dauerhaft zu betreuen.
Das erste, woran ich dachte, war die Notwendigkeit eines Monitorings. Ich entschied mich, es den klugen Leuten gleichzutun, das Rad nicht neu zu erfinden und nach fertigen Optionen wie Munin oder Zabbix zu schauen. Doch ich stellte schnell fest, dass die Web-Version eine gute Internetverbindung erfordert, besonders wenn man sie zum ersten Mal vom Handy aus öffnet. Wenn man jedoch in der Natur fernab der Stadt ist, ist es schwierig, eine stabile Verbindung zu bekommen. Daher wurde die Konsolenversion des Monitorings gewählt.
Als Konsolenmonitoring half mir atop gut, sowie das Programm zum Lesen der atop-Logs — atopsar. Diese wurden bereits auf Habr erwähnt, , aber über atopsar wurde fast nichts gesagt.
Installation von
Die Installation ist sehr einfach, nur drei Befehle.
#Centos
yum install atop#Debian/Ubuntu
apt-get install atopIm Folgenden können Sie die Überwachung an Ihre Bedürfnisse anpassen 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 Autostart hinzufügen
#Debian/Ubuntu/Centos
systemctl enable atop Atop als Dienst starten
#Debian/Ubuntu/Centos
systemctl start atop Für die Faulen habe ich alles in einen Befehl zusammengefasst
#Centos
yum install atop && systemctl enable atop && systemctl start atop#Debian/Ubuntu
apt-get install atop && systemctl enable atop && systemctl start atopAtopsar
Zusammen mit atop wird auch atopsar installiert, ein praktischer Konsolenanalysator für die Binärprotokolle, die vom Dienst atop geführt werden. Natürlich kann man die Protokolle auch direkt mit atop lesen, aber das ist weniger bequem, wenn man einen großen Zeitraum erfassen möchte.
Eine kleine Einführung in die Nutzung von atopsar.
Beim Starten von atopsar ohne Parameter wird das Protokoll für den aktuellen Tag geöffnet und die Last auf jeden Kern einzeln sowie die idl-Zeile für alle Kerne ausgegeben.
Die Parameter, die ich verwende:
-A = alle Informationen aus dem Protokoll anzeigen
-c = Informationen zur Last der Prozessorkerne, Standardparameter
-m = Last auf dem Arbeitsspeicher und Swap
-d = Plattenaktivität
-O = Top-3 Prozesse mit CPU-Last
-G = Top-3 Prozesse mit RAM-Last
-D = Top-3 Prozesse mit Plattenlast
-N = Top-3 Prozesse mit Netzwerklast
-r = Pfad zur Logdatei angeben, die Sie lesen möchten, falls Sie die Last der vergangenen Tage überprüfen möchten
-b = Zeitpunkt, ab dem die Ausgabe beginnen soll
-e = Zeitpunkt, an dem die Ausgabe enden soll
-M = erstellt eine zusätzliche Spalte am Ende, in der die Kritikalität der Zeile gekennzeichnet wird (+ es gibt Last, * — kritische Last)
Durch das Monitoring können wir jederzeit die Ursache für das fehlerhafte Verhalten des Servers verstehen.
Benachrichtigungen
Das Lastmonitoring ist vorhanden, gibt jedoch nicht die Möglichkeit, Probleme schnell zu finden und zu lösen. Wir benötigen Benachrichtigungen über aufgetretene Probleme.
Ich überwache die Server alleine, deshalb sollten die Benachrichtigungen an einen Ort gesendet werden, an dem ich sie immer sehen und darauf reagieren kann.
Anfangs gab es SMS — schnell, zuverlässig, kostenlos. Aber dann haben die Mobilfunkanbieter den kostenlosen SMS-Versand über ihre Gateways abgeschafft.
E-Mail — langwierig, es könnte Zustellprobleme geben.
Messenger — muss auf dem Telefon installiert werden, Bots müssen erstellt werden.
Nach einer Suche wurde der Messenger Telegram wegen seiner Einfachheit und der praktischen Anwendung auf Telefon und Desktop ausgewählt.
Ich habe meinen Bot mit Hilfe von .
Ich habe einige Skripte auf dem Server installiert, die die Serverlast (z. B. IDL, smartct usw.) überwachen, das Auftreten von "oom killer"-Fehlern, Fehler beim Erstellen von Backups und andere Vorgänge, die kontrolliert werden müssen.
Die Skripte sind recht einfach, in Bash geschrieben. Zum Beispiel wird die LA überprüft und eine Benachrichtigung über eine Überschreitung des Load Average im Verhältnis zur Anzahl der Kerne gesendet. Server.
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=Auf dem Server $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=Top 5 Prozesse `top -b -n 1 | grep -A 5 'PID USER' | tail -5`"
fiDie Einfachheit der Syntax bietet viele Nutzungsmöglichkeiten, und jeder, der ein wenig mit Programmierung vertraut ist, kann sie schreiben oder erweitern.
Ein kleiner Hinweis: Wenn der Server in Russland steht und kein IPv6 verfügbar ist, muss ein Proxy verwendet werden. Dazu sollte am Anfang des Skripts die Verbindung zum Proxy konfiguriert werden:
export https_proxy=http://benutzername:passwort@IP.adresse:portDas ist noch nicht das Ende
Du wanderst entspannt mit einem Rucksack durch die Berge, erholst dich von der Zivilisation, und plötzlich erhältst du eine Benachrichtigung von deinem Server, weil ein Problem aufgetreten ist. Was tun? Deine gelassene Stimmung ist wie weggeblasen. Soll ich meine Frau anrufen und Befehle diktieren? Haha!
Ich musste dringend einen Weg finden, um die aufgetretenen Probleme schnell zu beheben, ohne eine gute Internetverbindung zu haben. Hier hat mir wieder der Messenger (#telegrammlebt) geholfen. Ich habe meinem Bot beigebracht, nur mit mir zu kommunizieren und alle anderen zu ignorieren. Jetzt bekomme ich zusammen mit der Problemmeldung etwas mehr Daten, anhand derer ich den Ursprung des Problems erkennen kann, und ich kann versuchen, es aus der Ferne zu lösen. Es reicht, einfach eine Nachricht an den Bot zu schreiben, das Telefon etwas höher zu halten, damit die Nachricht gesendet wird, und voilà – der Bot erledigt deine Arbeit. So kann ich zum Beispiel einen unerwünschten Prozess beenden, einen Dienst neu starten, eine IP sperren und vieles mehr.
Hier habe ich zukünftige Anfragen von Kunden zusammengetragen, zum Beispiel dringende Passwortzurücksetzungen für Benutzer (denn „Aaaa, wir können nicht auf den Server zugreifen, wir verlieren Millionen!“), Suche nach Benutzern mit Zugriff auf den benötigten Ordner, das Ein- und Ausschalten der Website und andere. Natürlich arbeite ich ständig an der Funktionalität des Bots, da die Ideen der Kunden manchmal unerwartete und nicht von mir berücksichtigte Anfragen hervorrufen. Aber die meisten sind zufrieden.
Es gibt auch eine Version für VK, aber die hat sich irgendwie nicht durchgesetzt.
Jetzt reise ich entspannt und erkunde diese Welt, ohne Angst zu haben, dass etwas kaputtgeht und ich es nicht erfahren oder beheben kann.
Quelle: habr.com
