Linux-Systemadministratoren stehen oft vor der Herausforderung, zahlreiche Leistungsmetriken, Protokolle und Systemzustandsparameter zu überwachen. Traditionell verlassen Sie sich auf eine Vielzahl von Tools und Skripten, um Daten zur Festplattenauslastung, CPU-Leistung, zum Arbeitsspeicherstatus, zum Netzwerkverkehr und zu Systemprotokollen zu sammeln. Aber was wäre, wenn Sie ein Monitoring Linux Skript hätten, um alles auf Ihrem Linux-System zu überwachen?
In diesem Blogbeitrag zeigen wir Ihnen, wie Sie ein einzelnes Monitoring-Skript einrichten, das Ihnen Einblicke in jeden wichtigen Aspekt Ihres Linux-Systems gibt.
Von der CPU-Auslastung bis zum Speicherplatz, vom Speicherverbrauch bis zur Netzwerkaktivität bietet dieses Skript eine One-Stop-Lösung für Ihre Systemüberwachungsanforderungen.
Warum Überwachung von entscheidender Bedeutung ist
Die Überwachung Ihres Linux-Systems ist aus mehreren Gründen von entscheidender Bedeutung:
- Systemintegrität: Die proaktive Identifizierung von Problemen, bevor sie kritisch werden, kann dazu beitragen, Systemausfallzeiten zu vermeiden.
- Leistungsoptimierung: Durch die Überwachung der Ressourcennutzung können Sie Ihr System anpassen, um eine Spitzenleistung zu gewährleisten.
- Sicherheit: Regelmäßige Überwachung hilft, ungewöhnliche Muster zu erkennen, die auf Sicherheitsverletzungen oder Angriffe hinweisen könnten.
- Protokollverwaltung: Eine effektive Überwachung umfasst die Nachverfolgung von Protokollen, um Fehler oder Warnungen umgehend zu beheben.
Es gibt zwar zahlreiche Tools wie top, htop, iftop und df, aber die Verwaltung mehrerer Überwachungslösungen kann umständlich werden. Mit einem einzigen Skript vereinfachen Sie Ihren Arbeitsablauf und haben einen zentralen Bezugspunkt für den Zustand Ihres Systems.
Einrichten einer One-Script-Lösung
Bevor wir das Skript erstellen, lassen Sie uns skizzieren, was es überwachen muss:
- CPU-Auslastung: Behalten Sie die Prozessorleistung Ihres Systems im Auge.
- Speicherauslastung: Überwachen Sie die RAM- und Swap-Nutzung.
- Festplattennutzung: Stellen Sie sicher, dass Ihre Dateisysteme nicht zu voll werden.
- Netzwerkaktivität: Verfolgen Sie ein- und ausgehenden Datenverkehr.
- Laufende Prozesse: Achten Sie auf nicht autorisierte oder ressourcenintensive Prozesse.
- Systemprotokolle: Überwachen Sie kritische Protokolldateien kontinuierlich auf Fehler oder Warnungen.
Installation der erforderlichen Pakete
# Für Ubuntu/Debian
sudo apt-get install sysstat ifstat -y
# Für neuere Red Hat-Versionen mit dnf
sudo dnf install sysstat ifstat -y
# Für ältere Versionen mit yum
sudo yum install sysstat ifstat -y
Das vollständige Monitoring-Skript
Hier ist ein umfassendes Skript, das alle oben genannten Metriken in einer Ausgabe kombiniert. Sie können die Ausführung in Intervallen planen oder bei Bedarf manuell ausführen.
Installationsanleitungen
# Erstellen Sie ein Verzeichnis für das Skript
sudo mkdir -p /opt/script/
# Erstellen Sie die neue Datei und kopieren Sie das folgende Skript
sudo vim /opt/script/monitoring.sh
# Berechtigung zum Ausführen
von sudo chmod +x /opt/script/monitoring.sh
# Führen Sie das scritp manuell
aus/opt/script/monitoring.sh
(oder)
cd /opt/script && ./monitoring.sh
# cat /opt/script/monitoring.sh
#!/bin/bash
# Farben für die Lesbarkeit
GREEN='\033[0; 32m'GELB
='\033[1; 33m'RED
='\033[0; 31m'NC
='\033[0m' # No Color
echo -e "${GREEN}===== Systemüberwachungsskript =====${NC}"
# 1. CPU-Auslastung
echo -e "${YELLOW}\n>> CPU-Auslastung: ${NC}"
mpstat | awk '/all/ {print "CPU-Last: " $3 "% inaktiv"}'
# 2. Speicherverbrauch
echo -e "${YELLOW}\n>> Speicherverbrauch: ${NC}"
free -h | awk '/Mem/ {print "Gesamter Speicher: " $2 "\nVerwendet: " $3 "\nKostenlos: " $4}'
echo -e "Tausch:\n"$(frei -h | awk '/swap/ {print "Gesamt: " $2 ", Verwendet: " $3 ", Frei: " $4}')
# 3. Festplattenauslastung
echo -e "${YELLOW}\n>> Festplattennutzung: ${NC}"
df -h | grep '^/dev' | awk '{print $1 ": " $5 " verwendet, " $4 " verfügbar"}'
# 4. Netzwerkverkehr
echo -e "${YELLOW}\n>> Netzwerkverkehr: ${NC}"
ifstat -i eth0 1 1 | awk 'NR==3 {print "RX: " $1 " KB/s, TX: " $2 " KB/s"}'
# 5. Top 5 speicherintensive Prozesse
echo -e "${YELLOW}\n>> Top 5 speicherintensive Prozesse: ${NC}"
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | Kopf -n 6
# 6. Top 5 CPU-verbrauchende Prozesse
echo -e "${YELLOW}\n>> Top 5 CPU-verbrauchende Prozesse: ${NC}"
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | Kopf -n 6
# 7. Überwachung von
Systemprotokollen echo -e "${YELLOW}\n>> Kürzliche Fehler in Systemprotokollen: ${NC}"
journalctl -p 3 -xb | tail -n 10
echo -e "${GREEN}===== Überwachung abgeschlossen =====${NC}"
Aufschlüsselung des Drehbuchs
- CPU-Auslastung: Wir verwenden, um die CPU-Last zu erhalten, wobei wir uns insbesondere darauf konzentrieren, wie viel Leerlaufzeit die CPU hat. Wenn dieser Wert niedrig ist, ist Ihr System stark ausgelastet.
mpstat
- Speichernutzung: Der Befehl gibt eine für Menschen lesbare Zusammenfassung der Speicher- und Auslagerungsnutzung. Eine hohe Speicherauslastung kann darauf hindeuten, dass eine Anwendung übermäßig viele Ressourcen verbraucht.
free -h
- Festplattennutzung: Zeigt die Speicherplatznutzung für jede Partition an. Wenig Speicherplatz kann zu Leistungseinbußen und Systemabstürzen führen, daher ist dies von entscheidender Bedeutung.
df -h
- Netzwerkverkehr: Mit überwacht das Skript den ein- und ausgehenden Netzwerkverkehr auf einer bestimmten Schnittstelle (in diesem Fall ).
ifstat
eth0
- Top 5 Speicher- und CPU-verbrauchende Prozesse: Mit listet das Skript die Top 5 Prozesse auf, die den meisten Arbeitsspeicher und die meiste CPU verbrauchen, und hilft Ihnen, ressourcenintensive Aufgaben zu lokalisieren.
ps
- Überwachung von Systemprotokollen: Der Befehl zeigt aktuelle Fehler aus Systemprotokollen an und hilft Ihnen, Probleme zu identifizieren, die sich möglicherweise noch nicht auf die Systemleistung auswirken, aber unbedingt untersucht werden müssen.
journalctl
Automatisieren des Überwachungsskripts
Das manuelle Ausführen dieses Skripts ist zwar nützlich, aber es wird noch leistungsfähiger, wenn es so eingestellt ist, dass es in regelmäßigen Abständen automatisch ausgeführt wird. Sie können dies mit cron tun, dem in Linux integrierten Aufgabenplaner.
Methode 1: Einrichten eines Cron-Jobs
Führen Sie die folgenden Schritte aus, um die Ausführung des Skripts zu planen, z. B. stündlich:
Öffnen Sie Ihre Crontab-Datei:
crontab -e
Fügen Sie die folgende Zeile hinzu, um die stündliche Ausführung des Skripts zu planen:
0 * * * * /Pfad/zum/your_script. sh >> /var/log/system_monitor.log
Dadurch wird das Skript stündlich zur vollen Stunde ausgeführt und die Ausgabe in einer Datei protokolliert.
Hinweis: Sie können die Crontab-Zeit nach Ihren Wünschen einstellen.
Senden Sie Protokolle über die Befehlszeile an E-Mail
Jetzt hat der Server die Protokolle, aber wir müssen uns jedes Mal anmelden und die Dateien überprüfen, was keine praktikable Lösung ist.
Lassen Sie uns per E-Mail automatisieren.
Anforderungen:
- Postfix — ( E-Mail konfigurieren für Linux-System, siehe hier)
- mailutils
# Für Ubuntu
sudo apt-get install mailutils -y
# Für Redhat/Centos
sudo yum install mailx -y
Methode 1:
Mit dem folgenden Befehl werden unsere Überwachungsprotokolle per E-Mail gesendet. Sie können das Intervall an Ihre Anforderungen anpassen.
0 * * * schwanz -n 25 /var/log/system_monitor. Protokoll | mail -s "Tagesbericht" -a /var/log/system_monitor. Log-recipient@example.com
Methode 2: Schreiben Sie das Skript direkt neu An E-Mail senden
Hier ist ein alternatives Skript, um Protokolle direkt an E-Mail zu senden. Genauso wie das vorherige.
#!/bin/bash
# Ausgabedatei im HTML-Format
OUTPUT_FILE="/opt/script/monitoring_report.html"
# HTML Header echo
"<html><
head>
<title>System Monitoring Report</title>
<style>
body { font-family: Arial, sans-serif; }
h2 { Farbe: #2E8B57; }
.section { margin-top: 20px; padding: 10px; }
.cpu { Farbe: #FFA500; }
.memory, .disk, .network, .processes, .logs { color: #4682B4; }
.error { Farbe: #B22222; Schriftstärke: fett; }
pre { background-color: #f8f9fa; padding: 10px; border-radius: 5px; }
</Stil>
</Kopf>
<Körper
> <h1 style='Farbe: #2E8B57;' >Systemüberwachungsbericht</h1>
<h2>Datum: $(date)</h2>" > "$OUTPUT_FILE"
# CPU-Auslastungsecho
"<div class='section cpu'><h2>CPU-Auslastung:</h2><pre>" >> "$OUTPUT_FILE"
mpstat | awk '/all/ {print "CPU-Last: " $3 "% inaktiv"}' >> "$OUTPUT_FILE"
echo "</pre></div>" >> "$OUTPUT_FILE"
# Speicherauslastung
echo "<div class='section memory'><h2>Speichernutzung:</h2><pre>" >> "$OUTPUT_FILE"
free -h | awk '/Mem/ {print "Gesamter Speicher: " $2 "\nVerwendet: " $3 "\nKostenlos: " $4}' >> "$OUTPUT_FILE"
echo -e "\nSwap:\n$(frei -h | awk '/swap/ {print "Gesamt: " $2 ", Verwendet: " $3 ", Frei: " $4}')" >> "$OUTPUT_FILE"
echo "</pre></div>" >> "$OUTPUT_FILE"
# Festplattennutzung
echo "<div class='section disk'><h2>Festplattennutzung:</h2><pre>" >> "$OUTPUT_FILE"
df -h | grep '^/dev' | awk '{print $1 ": " $5 " gebraucht, " $4 " verfügbar"}' >> "$OUTPUT_FILE"
echo "</pre></div>" >> "$OUTPUT_FILE"
# Netzwerkverkehr
echo "<div class='section network'><h2>Netzwerkverkehr:</h2><pre>" >> "$OUTPUT_FILE"
ifstat -i eth0 1 1 | awk 'NR==3 {print "RX: " $1 " KB/s, TX: " $2 " KB/s"}' >> "$OUTPUT_FILE"
echo "</pre></div>" >> "$OUTPUT_FILE"
# Top 5 Speicherverbrauchsprozesseecho "<div class='section processes'><h2>Top 5 Speicherverbrauchsprozesse:</h2><pre>" >> "$OUTPUT_DATEI
"
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | Kopf -n 6 ≫ > "$OUTPUT_FILE"
echo "</pre></div>" >> "$OUTPUT_FILE"
# Top 5 CPU-verbrauchende Prozesse
echo "<div class='section processes"><h2>Top 5 CPU-verbrauchende Prozesse:</h2><pre>" >> "$OUTPUT_FILE"
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%CPU | head -n 6 >> "$OUTPUT_FILE"
echo "</pre></div>" >> "$OUTPUT_FILE"
# Systemprotokolle Überwachung
echo "<div class='Abschnittsprotokolle'><h2>Kürzliche Fehler in Systemprotokollen:</h2><pre class='error'>" >> "$OUTPUT_FILE"
journalctl - Seite 3 -XB | tail -n 10 >> "$OUTPUT_FILE"
echo "</pre></div>" >> "$OUTPUT_FILE"
# HTML Footer
echo "</body></html>" >> "$OUTPUT_FILE"
# E-Mail
senden -s "Systemüberwachung Bericht" -a "Inhaltstyp: text/html" recipient@example.com < "$OUTPUT_DATEI"
Visualisieren Sie Ihre Daten
Während das Skript Informationen an Ihr Terminal oder Ihre Protokolle ausgibt, können Sie die Daten visualisieren, insbesondere wenn Sie einen Produktionsserver verwalten. Zu diesem Zweck können Sie das Skript mit Tools wie Grafana und Prometheus integrieren. Diese Tools sammeln und grafisch darstellen und bieten Ihnen eine interaktive, visuelle Darstellung der Leistung Ihres Systems im Laufe der Zeit.
Mehr Sicherheit durch Monitoring
Bei der Systemüberwachung geht es nicht nur um die Leistung. Es spielt auch eine wichtige Rolle für die Sicherheit. Zum Beispiel:
- Protokollüberwachung: Wenn Sie die Systemprotokolle im Auge behalten, können Sie verdächtige Aktivitäten wie wiederholte Anmeldeversuche oder unbefugten Zugriff erkennen.
- Prozessüberwachung: Die Überwachung der Prozesse auf Ihrem System kann Malware oder unnötige Hintergrundaufgaben aufdecken.
- Netzwerkverkehr: Die Überwachung des ein- und ausgehenden Datenverkehrs kann ungewöhnliche Muster oder potenzielle Sicherheitsverletzungen aufdecken.
Fazit
Mit einem einzigen Monitoring Linux Skript zur Überwachung aller Vorgänge auf Ihrem Linux-System sparen Sie Zeit und machen den Überwachungsprozess effizienter. Dieser Ansatz kombiniert mehrere kritische Systemprüfungen in einem einfach zu verwaltenden Skript, das Ihnen jederzeit einen schnellen Überblick über den Zustand Ihres Systems gibt.
Durch die Automatisierung dieses Prozesses mit Cronjobs und die Visualisierung der Daten mit Tools wie Grafana können Sie sicherstellen, dass Ihr System reibungslos läuft, und Probleme identifizieren, bevor sie zu kritischen Problemen eskalieren.
Hilfreicher Tipp: Passen Sie dieses Monitoring Linux Skript an die individuellen Anforderungen Ihres Systems an. Sie können weitere Überprüfungen hinzufügen, z. B. die Temperaturüberwachung für Hardware oder E/A-Statistiken für Hochleistungsumgebungen.
Weitere Themen: 10 JavaScript-String-Tricks, die jeder Entwickler kennen sollte