Checkmk raw in Docker läuft Amok

Hallo zusammen,

ich habe folgendes Problem:
Ich betriebe CMK in der Raw-Version im Docker. Ich überwache ca. 650 Services. Seit einiger Zeit habe ich das Problem, dass der Container dann Amok läuft und der Host eine extrem hohe Load >150 hat. Stoppe ich den CMK-Container, dann hat der Server wieder eine normale Load.

Gibt es hier Leute, die ähnliche Probleme kennen? Gibt es eine Grenze an Services, die CMK innerhalb von Docker-Container verarbeiten kann. Macht es irgendwann Sinn, CMK direkt auf einem eigenen Host zu installieren?

Gruß
groove21

Für ein “produktiv” System schonmal ne schlechte Idee. Warum - die Raw Version spawnt für jeden Check einen Nagios Prozess und dieser kann eine ordentliche Größe erreichen, damit sind die Lastanforderungen innerhalb des Containers auf einmal sehr variabel. Dies kriegt ein Docker Container nicht ordentlich abgebildet.

Ich verfahre eigentlich immer so - Docker Container zum entwickeln und produktiv als VM, Physischer Server oder LXC, je nach Anforderungen.

Mit der Free/Enterprise Version ist das Problem mit dem Docker Container nicht so groß da hier halt die Worker nicht so viel Leistung dynamisch erfordern.

Zu deinem Amok laufenden Container wäre es relevant - welcher Prozess läuft den da “Amok”?

2 Likes

Zuerst mal: Was Andreas sagt.

Produktiv empfehle ich immer einen vollwertigen Linux Server (VM oder Blech ist nebensächlich).

Der Checkmk Micro Core (CMC) ist wesentlich leistungsfähiger als der Nagios Core, das erklärt generell einen Performance Unterschied.

Allerdings kann das bei 650 Services nun wirklich keine Rolle spielen. Wenn dein Docker Host hier eine Last von 150 aufweißt (bei vermutlich weit weniger als 150 Kernen) hast du ein anderes Problem. Ich würde in Richtung Storage oder Netzwerk weitersuchen, ich denke eher, dass du in ein IO -Problem läufst.

Hallo ihr zwei,

danke für die Antwort und meine späte Rückinfo.
Zunächst: Ich betriebe CMK in meiner Home-Umgebung und es hat daher keinen Hochverfügbarkeitsanspruch wie bei Firmen oder ähnlich. Aber trotzdem hätte ich es gerne, dass es rund läuft.
Für Docker habe ich mich damals entschieden, damit ich keine extra VM brauche. Und ich denke bei ca. 650 Services was sich auch groß nicht ändern wird, sollte der Docker das schaffen. Wobei ich eure Argumentation natürlich nachvollziehen mit einem eigenen Host.
Ich habe heute den CMK-Container mal wieder gestartet und habe die besagten IO-Probleme. Das Zeug geht auch in den Swap:

Ich kann mir nur nicht erklären, warum der Host die ganze Zeit bei einer Load um die 1 rumdümpelt und wenn ich CMK wieder anmache auf einmal Amok läuft:

Habt ihr eine Idee?

Ich bin für jeden Hinweis dankbar.

Auf dem Host laufen aktuell ca. 25 Container und die VM vom Docker hat 24 GB RAM und folgende Einstellungen:

image

Bei Rückfragen gerne melden.

Danke!

Ich finde gerade noch folgende Fehler im CMK-Container Log, glaube aber nicht, dass diese Ursache des Problems sind, oder?

ERROR: Failed to read config  of site backup. AGENT_RECEIVER_PORT port will possibly be allocated twice
ERROR: Failed to read config  of site backup. APACHE_TCP_PORT port will possibly be allocated twice
ERROR: Failed to read config  of site backup. LIVESTATUS_TCP_PORT port will possibly be allocated twice
ERROR: Failed to read config  of site backup. AGENT_RECEIVER_PORT port will possibly be allocated twice
ERROR: Failed to read config  of site backup. APACHE_TCP_PORT port will possibly be allocated twice
ERROR: Failed to read config  of site backup. LIVESTATUS_TCP_PORT port will possibly be allocated twice
Reloading Apache.../usr/sbin/apache2ctl: 99: ulimit: error setting limit (Operation not permitted)
Setting ulimit failed. See README.Debian for more information.
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using fd00::f014. Set the 'ServerName' directive globally to suppress this message
httpd not running, trying to start
OK
### STARTING XINETD
 * Starting internet superserver xinetd        
[ OK ]
### STARTING SITE
ERROR: Failed to read config  of site backup. AGENT_RECEIVER_PORT port will possibly be allocated twice
ERROR: Failed to read config  of site backup. APACHE_TCP_PORT port will possibly be allocated twice
ERROR: Failed to read config  of site backup. LIVESTATUS_TCP_PORT port will possibly be allocated twice
Temporary filesystem already mounted
Starting agent-receiver...OK
Starting mkeventd...OK
Starting rrdcached...OK
Starting npcd...OK
Starting nagios...OK
Starting apache...OK
Starting redis...OK
Initializing Crontab...OK
### STARTING CRON
### CONTAINER STARTED

Erstmal 1-2 Sachen was mir in den Screenshots auffällt.

  • 900MB Speicher wie im ersten Screenshot ist bei weitem zu wenig für einen CheckMK Raw Container egal wie viele Services da drin laufen. Kein Wunder das der nur am Swap nutzen ist.
  • da du scheinbar Proxmox nutzt würde ich stark empfehlen hier CMK in einem LXC Container laufen zu lassen. Funktioniert bei mir seit Jahren ohne Probleme im Homelab
  • Ressourcen - meine Installation läuft mit der Free/Cloud ohne Lizenz Version da gut unter den 750 Services und selbst hier wo weniger Ressourcen gebraucht werden wie bei einer RAW Edition bin ich bei gut 1,5 GB Hauptspeicherbedarf.

Lösung:

  • entweder Container wenigstens 3GB dauerhaft an Speicher zuweisen oder umziehen auf VM/LXC

PS: die letzten Meldungen mit dem Config sieht eher nach einem anderen Docker Problem aus, dass er sein Site Config File nicht richtig findet/lesen kann

Hey,

manchmal sieht man den Wald vor lauter Bäumen nicht. Ich hatte dem Host wesentlich mehr wie 900 MB RAM zugewiesen und deshalb gar nicht auf den Wert geachtet.
Es waren 8 GB RAM zugewiesen in Proxmox. Gleichzeitig war RAM Hotplug aktiviert, allerdings fehlte eine Einstellung auf dem Gastsystem:

/lib/udev/rules.d/80-hotplug-cpu-mem.rules

SUBSYSTEM=="cpu", ACTION=="add", TEST=="online", ATTR{online}=="0", ATTR{online}="1"
SUBSYSTEM=="memory", ACTION=="add", TEST=="state", ATTR{state}=="offline", ATTR{state}="online"

Durch diese fehlende Einstellung, hat der Host nicht seine zugewiesenen Ressourcen bekommen, sodern nur 1GB.
Lange Rede kurzer Sinn: Nachdem der Host wieder genug Luft zum Atmen hat, läuft alles wieder rund, auch CMK im Docker.

Die 1 GB haben ohne Docker für 25 Container gereicht :slight_smile:

Danke für eure Unterstützung.

Gruß