Linux-Server überwachen: Anleitung mit Agent
So überwachen Sie Linux-Server mit einem Befehl: CPU, RAM, Swap, Platten und Pakete. Anleitung für Debian, Ubuntu, RHEL und Alpine, mit Schwellwerten.
Zuletzt geprüft am
Einen Linux-Server überwachen Sie, indem Sie einen Agenten installieren, der regelmäßig CPU, Arbeitsspeicher, Swap und Festplatten misst und beim Überschreiten eines Schwellwerts einen Alarm auslöst. Bei inping ist das ein einziger Shell-Befehl. Der Agent liest nur, öffnet keinen Port und ist innerhalb einer Minute nach dem Start in inping sichtbar.
Was sehen Sie danach?
- Unter Agents: Hostname und System, Status Online, Zuletzt gesehen und die Anzeigen für CPU, Arbeitsspeicher und Festplatten.
- Übersicht des Agenten: die Verläufe von CPU, Arbeitsspeicher und Festplatten, dazu Version, Architektur und Kerne.
- Benutzerkonten: jedes Konto des Hosts mit dem CPU-Anteil und dem Arbeitsspeicher seiner Prozesse, ab der zweiten Messung. Auf einem Shared Host sehen Sie so, welcher Kunde die Last erzeugt.
- Pakete: die installierten Pakete aus dpkg, rpm, apk oder pacman.
- Jobs: Cron-Einträge und systemd-Timer mit Zeitplan, Befehl und Benutzer.
- Projekt → Pakete: Laufzeiten und Pakete der Projekte auf dem Server, gelesen aus den Lock-Dateien (beim ersten Durchlauf nach dem Start, danach alle 15 Minuten geprüft).
- Schwachstellen: innerhalb eines Tages erscheinen bekannte Schwachstellen dieser Pakete am Projekt und am Agenten.
Welche Metriken zählen auf einem Linux-Server?
Vier Werte erklären die meisten Probleme. Die genannten Grenzen sind Startwerte, die Sie an den Server anpassen: Ein Datenbankserver darf den Arbeitsspeicher füllen, ein Build-Server darf die CPU auslasten.
CPU-Auslastung
Der Anteil der Zeit, in der die Prozessoren arbeiten. Kurze Spitzen sind normal und sagen wenig. Interessant ist eine hohe Auslastung über mehrere Minuten, deshalb gilt die Vorgabe in inping erst nach 5 Minuten über 90 %.
Load Average
Die Zahl der Prozesse, die laufen oder warten, im Mittel über 1, 5 und 15 Minuten. Unter Linux zählen auch Prozesse mit, die auf die Festplatte warten. Lesen Sie den Wert immer im Verhältnis zur Zahl der Kerne: Eine Last von 4 ist auf 8 Kernen entspannt und auf 2 Kernen zu viel. Hohe Last bei niedriger CPU-Auslastung deutet oft auf langsame Festplatten hin. Für die Last gibt es keine Standardregel, der richtige Wert hängt von den Kernen ab. Eine Regel auf Last (5 Min.) legen Sie selbst an.
Arbeitsspeicher und Swap
Linux nutzt freien Speicher als Datei-Cache, „wenig frei“ ist deshalb kein Alarmzeichen. inping rechnet
Gesamt minus verfügbar, das entspricht der Spalte available von free -h: Der Cache
zählt also nicht als belegt. Wird der Speicher wirklich knapp, beginnt das System zu swappen und beendet im
Extremfall Prozesse (OOM Killer). Wachsender Swap bei hohem Speicherverbrauch ist das frühere Warnzeichen.
Dafür legen Sie bei Bedarf eine eigene Regel an, zum Beispiel Swap über 50 % für 15 Minuten.
Festplatten
Eine volle Platte bringt Dienste zuverlässig zum Stehen: Datenbanken können nicht mehr schreiben, Logs gehen
verloren. inping warnt deshalb pro Mount sofort ab 90 %. Rechnen Sie nach, was das bedeutet: Bei 40 GB
bleiben 4 GB, bei 2 TB noch 200 GB. Auf kleinen Platten lohnt eine zweite Regel mit niedrigerem Wert, auf
großen eine Regel auf den belegten Platz in Byte. Setzen Sie die Grenze nicht zu hoch: ext4 hält
standardmäßig 5 % für root frei, Dienste ohne root bekommen dann schon vor 100 % keinen Platz mehr. Inodes
misst inping nicht; das prüfen Sie bei Bedarf mit df -i.
Voraussetzungen
- ein kostenloses inping-Konto und ein Projekt, wenn der Agent Pakete melden soll
curloderwget, außerdemsudooder eine root-Shell- ausgehendes HTTPS zu
www.inping.ioauf Port 443; eingehend muss nichts geöffnet werden - amd64 oder arm64; das Skript wählt den passenden Build
- eine laufende Zeitsynchronisation (
chronyd,systemd-timesyncd,ntpd): Meldungen, die mehr als 60 Sekunden vor der Uhr der Plattform liegen, werden abgelehnt - für die Landlock-Sandbox des Agenten ein Kernel ab 5.13; ältere Kernel führen den Agenten auch aus, dann nur mit der systemd-Härtung
Schritt für Schritt auf Debian und Ubuntu
Die Anleitung gilt auch für Raspberry Pi OS, Linux Mint und andere Debian-basierte Systeme mit systemd.
1. Agent anlegen und Befehl kopieren
In inping unter Agents → Agent hinzufügen oder im Projekt unter Server → Agent hinzufügen.
Der Dialog zeigt das Registrierungs-Token genau einmal, es gilt 24 Stunden. Er zeigt auch den fertigen
Befehl für jedes System, in dem Token, Adresse und Projekt-ID schon eingesetzt sind. Ein Klick kopiert ihn.
Alle Systeme und Downloads stehen außerdem in der App unter Agents → Installation und Downloads (/agents/install).
2. Befehl auf dem Server ausführen
curl -fsSL https://www.inping.io/install.sh | INPING_TOKEN=<token> sudo --preserve-env=INPING_TOKEN sh -s -- --project <project-id>=/srv/shop <token> und <project-id> sind hier Platzhalter. Wiederholen Sie --project für jedes Projekt auf dem Server; die ID steht unter Projekt → Einstellungen. Das Skript lädt den Agenten, prüft die SHA-256-Summe (mit installiertem minisign auch die Signatur), legt den Benutzer inping-agent an, schreibt die Konfiguration und startet
den Dienst. Die letzte Zeile lautet inping: inping-agent <version> installed.
3. Leserechte für das Projekt geben
Damit der Agent composer.lock, package-lock.json und ähnliche Dateien lesen kann, nehmen
Sie den Dienstbenutzer in die Gruppe auf, der das Projekt gehört. Führen Sie den Agenten nie als root aus.
sudo usermod -aG www-data inping-agent
sudo systemctl restart inping-agent Ohne root installieren
Für einen Shared Host oder einen Kundenserver ohne root-Zugang: dasselbe Skript mit --user,
ausgeführt mit dem Konto, das das Projekt lesen darf.
curl -fsSL https://www.inping.io/install.sh | INPING_TOKEN=<token> sh -s -- --user --project <project-id>=$HOME/www/shop Alles bleibt im Home-Verzeichnis, der Agent liest genau das, was Ihr Konto lesen darf. Prüfen Sie mit systemctl --user status inping-agent. Zwei Einschränkungen: Der Benutzer-Manager von systemd
stoppt beim letzten Logout, wenn Lingering nicht aktiv ist (sudo loginctl enable-linger <konto>; das Skript versucht es selbst und meldet, wenn es nicht klappt). Und die Sandbox ist dünner als beim
Systemdienst, Landlock greift ab Kernel 5.13 trotzdem.
Netzwerk pro Konto (optional)
Empfangene und gesendete Daten pro Konto zählt die IP-Abrechnung von systemd. Sie wird mit --ip-accounting eingeschaltet, der Agent liest die Zähler nur:
curl -fsSL https://www.inping.io/install.sh | sudo sh -s -- --ip-accounting Das ist eine systemweite Einstellung. Sehen Sie sich die Wirkung auf einem stark belasteten Host an, bevor
Sie sie überall ausrollen; --no-ip-accounting nimmt sie zurück.
Besonderheiten auf Rocky Linux, AlmaLinux, CentOS Stream und Fedora
Alles von oben gilt, derselbe Befehl funktioniert:
curl -fsSL https://www.inping.io/install.sh | INPING_TOKEN=<token> sudo --preserve-env=INPING_TOKEN sh -s -- --project <project-id>=/var/www/shop Die Gruppe des Webservers heißt hier meist apache oder nginx:
sudo usermod -aG nginx inping-agent && sudo systemctl restart inping-agent - SELinux kann auf enforcing bleiben, ein Policy-Modul ist nicht nötig. Zeigt
ausearch -m avc -ts recenttrotzdem Ablehnungen fürinping-agent, kennzeichnen Sie das Projektverzeichnis zum Lesen, statt SELinux auszuschalten. - firewalld erlaubt ausgehende Verbindungen standardmäßig.
- Schwachstellen: Pakete von Rocky Linux und AlmaLinux werden gegen Sicherheitsmeldungen geprüft. Fedora meldet kein Ökosystem, seine Pakete werden nur aufgelistet und nicht geprüft.
Besonderheiten auf Alpine Linux
Alpine hat kein systemd und kein useradd. Das Skript installiert und registriert den Agenten,
den Dienst richten Sie mit OpenRC selbst ein. Voraussetzungen: apk add curl und root. Legen Sie zuerst
den Benutzer an, dann richtet das Skript den Agenten ein:
adduser -S -D -H -h /var/lib/inping-agent -s /sbin/nologin inping-agent
curl -fsSL https://www.inping.io/install.sh | INPING_TOKEN=<token> sh -s -- --project <project-id>=/srv/shop Anschließend den OpenRC-Dienst anlegen und starten:
cat >/etc/init.d/inping-agent <<'EOF'
#!/sbin/openrc-run
name="inping-agent"
description="inping agent: host metrics and packages for inping"
supervisor=supervise-daemon
command="/usr/local/bin/inping-agent"
command_args="run --config /etc/inping/agent.toml"
command_user="inping-agent:inping-agent"
respawn_delay=10
output_log="/var/log/inping-agent.log"
error_log="/var/log/inping-agent.log"
depend() {
need net
after firewall
}
EOF
chmod 0755 /etc/init.d/inping-agent
touch /var/log/inping-agent.log && chown inping-agent /var/log/inping-agent.log
rc-update add inping-agent default
rc-service inping-agent start Leserechte gibt addgroup inping-agent www-data (oder die Gruppe des Projekts), danach rc-service inping-agent restart. Geprüft wird so:
rc-service inping-agent status # started
tail -n 20 /var/log/inping-agent.log Update: Der eingebaute Updater startet den Dienst über systemctl neu und ist auf
Alpine deshalb nicht nutzbar. Führen Sie stattdessen das Skript ohne Token erneut aus, Konfiguration und Registrierung
bleiben erhalten:
curl -fsSL https://www.inping.io/install.sh | sh && rc-service inping-agent restart Deinstallation:
rc-service inping-agent stop && rc-update del inping-agent default && rm /etc/init.d/inping-agent
curl -fsSL https://www.inping.io/install.sh | sh -s -- --purge Der Benutzer bleibt dabei bestehen, deluser inping-agent entfernt ihn.
Wie prüfen Sie, ob es funktioniert?
systemctl status inping-agent # active (running)
journalctl -u inping-agent -n 20 # die Zeilen unten
sudo inping-agent check # die Konfiguration von der Plattform (Intervall, Metriken, Projekte) Das Log eines gesunden Starts sieht so aus:
level=INFO msg=sandbox enforced=true detail=…
level=INFO msg=starting version=1.2.0 platform=https://www.inping.io
level=INFO msg=configuration interval_seconds=60 buffer_hours=24 metrics="[cpu memory disk network containers users platform]"
level=INFO msg="host packages reported" packages=612
level=INFO msg="host jobs reported" jobs=9
level=INFO msg="inventory reported" project=01m5qxbbej7tdq8m4hhqvr9vhn components=84 In inping ist der Agent innerhalb einer Minute Online, die Host-Pakete folgen wenige Sekunden nach dem Start, die Pakete des Projekts bei der ersten Prüfung. Die Verläufe beginnen ab der zweiten Messung.
Schwellwerte und Alarme
Jeder neue Agent startet mit vier Regeln, die Sie ändern, abschalten oder löschen können:
| Metrik | Bedingung | Dauer |
|---|---|---|
| CPU-Auslastung | über 90 % | 5 Minuten |
| Arbeitsspeicher | über 90 % | 5 Minuten |
| Festplatte (jeder Mount) | über 90 % | sofort |
| Docker-Service | läuft nicht | sofort |
Eigene Regeln legen Sie auf der Seite des Agenten unter Einstellungen → Alarmregeln an: eine Metrik ist über, unter oder gleich einem Wert, für eine Zahl von Minuten (0 bis 1440). Ein Agent kann bis zu 50 Regeln haben, auch mehrere auf derselben Metrik. Ein Alarm öffnet sich einmal und schließt sich einmal, wenn der Wert wieder passt.
Dazu kommt der Offline-Alarm: Nach drei ausgebliebenen Meldungen gilt der Agent als offline. Damit Sie davon erfahren, braucht das Projekt, dem der Agent zugeordnet ist, eine Benachrichtigungsregel für das Ereignis, zum Beispiel Server-Schwellwert überschritten oder Agent offline, per Mail oder Webhook.
Zum Testen: Legen Sie eine Regel CPU über 1 % für 0 Minuten an. Der Alarm öffnet sich mit der nächsten Meldung. Löschen Sie die Regel danach, der Alarm schließt sich wieder.
Was darf der Agent auf dem Server?
- Er läuft als eigener Benutzer ohne Capabilities, mit
ProtectSystem=strict,NoNewPrivilegesund Syscall-Filter.systemd-analyze securitybewertet den Dienst mit 1.3. - Ab Kernel 5.13 sperrt er sich beim Start zusätzlich mit Landlock: lesen überall, schreiben nur in
/var/lib/inping-agent. - Die Konfiguration
/etc/inping/agent.tomlgehört root. Welche Projektverzeichnisse er liest, steht dort und nicht in der Plattform. - Das Skript nimmt den Benutzer in die Gruppen
systemd-journalundadmauf, falls vorhanden, damit in inping gesetzte Log-Quellen lesbar sind. Log-Quellen sind aus, bis Sie eine anlegen. - Updates laufen getrennt vom Dienst als root und installieren nur Releases, deren Signatur zum im Programm eingebauten Schlüssel passt.
- Die Plattenbelegung pro Konto misst ein eigener Timer. Er hat als einziger Teil eine Capability (
CAP_DAC_READ_SEARCH), liest nur Metadaten, nie Dateiinhalte, und hat kein Netzwerk.
| Was | Wo |
|---|---|
| Programm | /usr/local/bin/inping-agent |
| Konfiguration | /etc/inping/agent.toml |
| Zustand (Token, Puffer) | /var/lib/inping-agent |
| Dienst | /etc/systemd/system/inping-agent.service |
| Update | inping-agent-update.timer, alle 6 Stunden |
| Log | journalctl -u inping-agent |
Update
Das Update läuft automatisch: Der Timer führt alle 6 Stunden inping-agent update aus, installiert
eine neuere signierte Version, startet den Dienst neu und rollt zurück, wenn er nicht hochkommt. Von Hand:
sudo inping-agent update --check # nur nachsehen
sudo inping-agent update # jetzt installieren Auch der Installationsbefehl ohne Token aktualisiert und behält Konfiguration und Registrierung.
Deinstallieren
curl -fsSL https://www.inping.io/install.sh | sudo sh -s -- --uninstall # Dienst und Programm
curl -fsSL https://www.inping.io/install.sh | sudo sh -s -- --purge # auch Konfiguration, Zustand und Benutzer Löschen Sie den Agenten danach in inping unter Agents → (Agent) → Einstellungen → Agent löschen.
Seine Metriken und Alarme gehen mit ihm. Ohne root-Installation ergänzen Sie --user --uninstall oder --user --purge am Installationsbefehl.
Wenn nichts ankommt
cannot startoderregistration failedim Log: Das Token wurde schon benutzt, ist abgelaufen oder gehört zu einer anderen Plattform. Erzeugen Sie unter Neues Registrierungs-Token ein neues und führen Sie den Befehl damit erneut aus.configuration unusable: Tippfehler in/etc/inping/agent.toml. Unbekannte Schlüssel sind absichtlich ein Fehler.- Agent läuft, bleibt aber Noch nicht registriert oder Offline: Ausgehendes HTTPS ist blockiert,
api_urlzeigt auf den falschen Host oder die Uhr geht mehr als eine Minute vor. Testen Sie die Verbindung als Benutzer des Agenten:
curl -sI https://www.inping.io/api/v1/releases/agent/latest - Metriken kommen an, Pakete nicht: Der folgende Befehl zeigt, was der Dienstbenutzer lesen kann. Ein Verzeichnis, das er nicht betreten darf, wird als „nichts“ gemeldet.
sudo -u inping-agent inping-agent inventory --config /etc/inping/agent.toml - Host-Pakete fehlen: Der Host hat weder dpkg, rpm, apk, Homebrew noch pacman, oder in
der Konfiguration steht
[host] packages = false.
Häufige Fragen
Braucht der Agent root-Rechte?
Zur Laufzeit nicht: Der Dienst läuft als eigener Benutzer inping-agent ohne besondere Rechte. Root oder sudo braucht nur die übliche Installation. Mit --user geht es ganz ohne root, dann läuft der Agent unter Ihrem eigenen Konto.
Welche Linux-Distributionen werden unterstützt?
Debian, Ubuntu, Raspberry Pi OS, Linux Mint und andere Debian-basierte Systeme mit systemd, außerdem Rocky Linux, AlmaLinux, CentOS Stream und Fedora, jeweils auf amd64 und arm64. Alpine Linux läuft mit OpenRC und einigen Handgriffen mehr.
Muss ich einen Port in der Firewall öffnen?
Nein. Der Agent lauscht auf keinem Port und baut nur ausgehende HTTPS-Verbindungen zu www.inping.io auf Port 443 auf.
Wie oft misst der Agent?
Standardmäßig alle 60 Sekunden. Das Intervall wird pro Agent in inping eingestellt, von 10 bis 3600 Sekunden.
Was passiert, wenn die Verbindung zu inping abbricht?
Der Agent misst weiter und puffert lokal, standardmäßig 24 Stunden lang (einstellbar bis 168 Stunden) und höchstens 64 MB. Danach fallen die ältesten Daten weg. Sobald die Plattform wieder erreichbar ist, geht der Rückstand in wenigen Paketen hinaus, Doppelte verwirft die Plattform.
Merkt inping, wenn der Server komplett ausfällt?
Ja. Bleiben drei Meldungen aus, bei 60 Sekunden Intervall also nach drei Minuten, gilt der Agent als offline und ein Alarm öffnet sich. Ob die Website auf dem Server von außen erreichbar ist, prüfen unabhängig davon die Runner per HTTP(S), sobald Sie die URL im Projekt eintragen.
Was kostet die Überwachung eines Linux-Servers?
Im Free-Tarif sind 2 Agents dauerhaft kostenlos enthalten, ohne Zahlungsdaten. Für mehr Server gibt es bezahlte Tarife.