Zum Inhalt springen

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
  • curl oder wget, außerdem sudo oder eine root-Shell
  • ausgehendes HTTPS zu www.inping.io auf 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 recent trotzdem Ablehnungen für inping-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:

MetrikBedingungDauer
CPU-Auslastungüber 90 %5 Minuten
Arbeitsspeicherüber 90 %5 Minuten
Festplatte (jeder Mount)über 90 %sofort
Docker-Serviceläuft nichtsofort

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, NoNewPrivileges und Syscall-Filter. systemd-analyze security bewertet 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.toml gehört root. Welche Projektverzeichnisse er liest, steht dort und nicht in der Plattform.
  • Das Skript nimmt den Benutzer in die Gruppen systemd-journal und adm auf, 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.
WasWo
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
Updateinping-agent-update.timer, alle 6 Stunden
Logjournalctl -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 start oder registration failed im 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_url zeigt 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.

Weiterlesen