Ich beschloss, meine Geschichte zu teilen. Vielleicht braucht sogar jemand eine solche Budgetlösung für ein bekanntes Problem.
Als ich jung und heiß war und nicht wusste, was ich mit meiner Energie anfangen sollte, beschloss ich, ein wenig freiberuflich zu arbeiten. Es gelang mir schnell, eine Bewertung zu erhalten und einige Stammkunden zu finden, die mich baten, ihre Server fortlaufend zu unterstützen.
Das erste, woran ich dachte, war die Notwendigkeit einer Überwachung. Ich beschloss, es klugen Leuten gleichzutun, nicht das Rad neu zu erfinden, sondern mir fertige Optionen wie Munin oder Zabbix anzusehen. Aber ich habe sofort festgestellt, dass die Webversion eine gute Internetverbindung erfordert, insbesondere wenn Sie sie zum ersten Mal von Ihrem Telefon aus öffnen. Wenn Sie fernab der Stadt in der Natur entspannen, ist es schwierig, eine stabile Verbindung herzustellen. Daher wurde die Konsolenüberwachungsoption gewählt.
Atop und das Programm zum Lesen von Atop-Protokollen – atopsar – haben mir bei der Konsolenüberwachung gut geholfen. Sie wurden bereits auf Habr erwähnt, , aber über Atopsar wurde fast nichts gesagt.
Einstellung
Sehr einfache Installation, nur drei Befehle.
#Centos
yum install atop#Debian/Ubuntu
apt-get install atopAnschließend können Sie den Überwachungsvorgang individuell 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 Autorun hinzufügen
#Debian/Ubuntu/Centos
systemctl enable atop Als Daemon ausführen
#Debian/Ubuntu/Centos
systemctl start atop Für die Faulen habe ich mich zu einem Team zusammengeschlossen
#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; es ist ein praktischer Konsolenanalysator für Binärprotokolle, die vom atop-Daemon geführt werden. Natürlich können Sie die Protokolle auch mit „atop“ selbst lesen, aber das ist nicht so praktisch, wenn Sie einen großen Zeitraum erfassen müssen.
Ein kleines Bildungsprogramm zur Arbeit von Atopsar.
Wenn Sie atopsar ohne Schlüssel starten, wird das Protokoll für heute geöffnet und die Auslastung jedes Kerns separat sowie die IDL-Zeile für alle Kerne angezeigt.
Schlüssel, die ich verwende:
-A = alle Informationen aus dem Protokoll anzeigen
-mit = Informationen zur Auslastung der Prozessorkerne anzeigen, Standardschlüssel
-m = Auf RAM laden und austauschen
-d = Festplattenaktivität
-O = Top 3 CPU-Lastprozesse
-G = Top-3-Prozesse werden im RAM geladen
-D = Top 3 Festplattenladeprozesse
-N = Top 3 Netzwerklastprozesse
-r = Geben Sie den Pfad zum Protokoll an, das Sie lesen möchten, wenn Sie die Auslastung der letzten Tage sehen möchten
-b = Zeitpunkt, ab dem mit der Auszahlung begonnen werden soll
-e = Zeitpunkt, zu dem die Ausgabe abgeschlossen sein soll
-M = erstellt am Ende eine zusätzliche Spalte, die die Kritikalität der Zeile markiert (+ ist die Last, * ist die kritische Last)
Dank der Überwachung sind wir jederzeit in der Lage, die Ursache für fehlerhaftes Serververhalten nachzuvollziehen.
Benachrichtigungen
Es gibt also eine Lastüberwachung, die es jedoch noch nicht ermöglicht, Probleme schnell zu finden und zu lösen. Wir benötigen Benachrichtigungen über das Problem.
Ich bin der Einzige, der die Server überwacht, daher muss ich die Benachrichtigung an einen Ort senden, an dem ich es immer sehen und zumindest irgendwie darauf reagieren kann.
Am Anfang gab es SMS – schnell, zuverlässig, kostenlos. Doch dann stellten die Mobilfunkbetreiber den Versand kostenloser SMS-Nachrichten über ihre Gateways ein.
Die Post dauert lange, es kann zu Problemen bei der Zustellung kommen.
Messenger – Sie müssen sie auf Ihrem Telefon installieren und Bots erstellen.
Als Ergebnis der Suche wurde der Telegram-Messenger aufgrund seiner Einfachheit und bequemen Anwendung auf dem Telefon und dem Desktop ausgewählt.
Erstellt Ihren Bot mit .
Dann habe ich mehrere Skripte auf dem Server abgelegt, die die Auslastung des Servers (IDL, Smartct usw.), das Vorhandensein von Fehlern wie „oom killer“, Fehler beim Erstellen eines Backups und andere Vorgänge überwachen, die überwacht werden müssen.
Die Skripte sind recht einfach, in Bash geschrieben, prüfen beispielsweise die Systemlast und benachrichtigen, wenn die Systemlast die Anzahl der Kerne überschreitet. 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=На сервере $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`"
fiDie Einfachheit der Syntax bietet viele Verwendungsmöglichkeiten (und kann von jedem geschrieben/hinzugefügt werden, der zumindest ein wenig über Kenntnisse einer Programmiersprache verfügt).
Die einzige Einschränkung besteht darin, dass Sie einen Proxy verwenden müssen, wenn sich der Server in Russland befindet (und Sie nicht über IPv6 auf dem Server verfügen). Dazu müssen Sie am Anfang des Skripts den Verbindungsstring zum Proxy schreiben:
export https_proxy=http://логин:пароль@IP.адрес:портDas ist nicht das Ende
Sie wandern ruhig mit einem Rucksack auf dem Rücken durch die Berge, machen eine Pause von der Zivilisation und dann sendet Ihr Telefon, das versehentlich eine Verbindung aufnimmt, eine Benachrichtigung über ein Problem, das auf Ihrem Server aufgetreten ist. Was zu tun ist? Die heitere Stimmung wurde vom Wind verweht. Rufen Sie Ihre Frau an und diktieren Sie Befehle? Ha ha!
Es musste dringend eine Möglichkeit gefunden werden, die aufgetretenen Probleme schnell und ohne gute Internetverbindung zu lösen. Hier hat mich der Messenger wieder gerettet (#telegramlive). Ich habe meinem Bot beigebracht, nur mit mir zu kommunizieren und alle anderen zu ignorieren. Jetzt erhalte ich zusammen mit der Benachrichtigung über das Problem noch ein paar weitere Daten, anhand derer ich erkenne, wer die Ursache des Problems ist, und ich kann versuchen, es aus der Ferne zu lösen. Sie müssen nur eine Nachricht an den Bot schreiben, Ihr Telefon höher werfen, damit die Nachricht verschwindet, und voilà – der Bot macht sich an die Arbeit. Auf diese Weise kann ich beispielsweise einen unerwünschten Prozess beenden, den Daemon neu starten, eine IP blockieren usw.
Hier habe ich auch künftig notwendige Anfragen von Kunden übermittelt, z. B. das dringende Zurücksetzen von Passwörtern für Benutzer (denn „Ahhh, wir kommen nicht an den Server, wir verlieren Millionen!“), die Suche nach einem Benutzer, der Zugriff darauf hat gewünschter Ordner, Ein- und Ausschalten der Site usw. Natürlich verbessere ich ständig die Funktionalität des Bots, da die Fantasie der Kunden manchmal unerwartete Anfragen hervorruft, die ich nicht vorhergesehen habe. Aber die wichtigsten sind zufrieden.
Es gibt auch eine Version für VK, aber irgendwie hat sie sich nicht durchgesetzt.
Jetzt reise und erkunde ich ruhig diese Welt, ohne Angst zu haben, dass dort etwas kaputt geht und ich es nicht herausfinden oder reparieren kann.
Source: habr.com
