CPU Usage von LXC Containers

Hallo zusammen,

gestern habe ich das Upgrade auf 1.6.0p7 raw gewagt. Auch die Agents habe ich gleich mit aktualisiert. Bei LXC Containern welche auf einem Proxmox Host laufen fehlt nun die CPU Usage:

Soweit ich das verstanden habe, ist das lxc_container_cpu Plugin neu. Muss man hier etwas besonderes beachten, damit der Agent Output geparsed wird?

<<<check_mk>>>
Version: 1.6.0p7
AgentOS: linux
Hostname: checkmk
AgentDirectory: /etc/check_mk
DataDirectory: /var/lib/check_mk_agent
SpoolDirectory: /var/lib/check_mk_agent/spool
PluginsDirectory: /usr/lib/check_mk_agent/plugins
LocalDirectory: /usr/lib/check_mk_agent/local
OnlyFrom: 192.168.42.0/24 127.0.0.1 192.168.99.113

[...]

<<<lxc_container_cpu>>>
cpu  80620409 0 0 449484937 0 0 0 0 0 0
num_cpus 2

[...]

<<<lnx_distro:sep(124):persist(1576519652):cached(1576504652,43200)>>>
[[[/etc/debian_version]]]
9.11
[[[/etc/os-release]]]
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"|NAME="Debian GNU/Linux"|VERSION_ID="9"|VERSION="9 (stretch)"|VERSION_CODENAME=stretch|ID=debian|HOME_URL="https://www.debian.org/"|SUPPORT_URL="https://www.debian.org/support"|BUG_REPORT_URL="https://bugs.debian.org/"
<<<lnx_cpuinfo:sep(58):persist(1576519652):cached(1576504652,43200)>>>
processor:0

[...]

Jemand ne Idee?

Viele GrĂĽĂźe
Christian

Ping? Keiner eine Idee?

Hi perryflynn,

Lösung für dein Problem:
“CPU ulitization” reinventarisieren, da es nun aus dem Plugin kommt, nicht mehr aus kernel.util. Der Service heißt identisch, wird aber intern anders gehandhabt …


Langtext:

ich hatte das lxc_container_cpu noch garnicht mitbekommen, coole Sache!
Hab direkt mal den neuen Agent (1.6) ausgerollt, hab selbst CheckMK auf Proxmox im Einsatz.

Auszug nach dem AgentUpdate:

WARN - [agent] Version: 1.6.0p7, OS: linux, Missing agent sections: cpu, kernel, WARN, execution time 0.6 sec
WARN - 2 unmonitored services (lxc_container_cpu:1, systemd_units.services_summary:1), WARN, 5 vanished services (kernel:3, cpu.loads:1, kernel.util:1), no new host labels

Offenbar überschreibt das Plugin die normale Ausgabe, habe nur noch “CPU ulitization” als CPU-Service…

PrĂĽfen ob der neue Check aktiv ist kannst du das wie folgt:
Im Service “CPU utilization” im Feld “Service check command” steht nun check_mk-lxc_container_cpu.

Vorher stand da check_mk-kernel.util

Und fĂĽr mich sind die Daten deutlich Sinnvoller geworden!
Danke @CheckMKTeam :slight_smile:


Edit:
Die Virtualisierung von /proc in LXC ist bekanntermaĂźen recht bescheiden. Insbesonders die CPU-Load mĂĽsste anteilig berechnet werden, was nach meinem Kenntnisstand bis heute offen ist. Das ist ein offenes Thema von LXCFS.

Somit zeigt CheckMK die möglichen Daten korrekt an. Was hinten runterfällt ist LXC geschuldet, nicht CheckMK :+1:

1 Like

Moin!

Siehe meinen Screenshot. Das Plugin ist aktiv, ein reinventarize brachte bisher nichts. Ich habe sogar testweise mal einen neuen Host angelegt. Auch da ist der Service unknown.

VG

Okay stimmmt, hab deinen Screenshot sträflich missachtet …

Was mich aber wundert: woher kommt der Check bei dir?
Hast du den irgendwie über Regeln “reingeprügelt” ?

Wenn der Check nicht gefunden wird, dann darf der auch nicht inventarisiert sein. Irgendwas ist da krumm bei dir …

Die Fehlermeldung sagt ja klar aus, dass der Abschnitt nicht im Agent-Output enthalten ist. Woher kam dann die Inventarisierung? Wo hast du den Agentoutput abgegriffen? direkt auf dem Server oder in der Webgui?

Hi Christian,

ich rätsel noch, wie das sein kann. Kannst Du bitte mal den Output von “cmk -nv --checks lxc_container_cpu HOSTNAME” hier posten?

Keine welche die CPU betreffen. In dem Ordner ist nur eine, welche RAM Parameter deaktivieren, welche bei LXC sinnlos sind.

Via Telnet: telnet host 6556

Check_MK version 1.6.0p7
+ FETCHING DATA
 [agent] Execute data source
 [piggyback] Execute data source
No piggyback files for 'files.srv.brickburg.de'. Skip processing.
No piggyback files for '192.168.99.104'. Skip processing.
CPU utilization      UNKN - Item not found in agent output
OK - [agent] Version: 1.6.0p7, OS: linux, execution time 0.2 sec | execution_time=0.238 user_time=0.040 system_time=0.000 children_user_time=0.000 children_system_time=0.000 cmk_time_agent=0.190

Hi @perryflynn

kannst Du mir mal den kompletten Agentoutput schicken, dann versuche ich das hier mal nachĹşustellen

Klar:
https://pastebin.com/t14Aajs0

Hi,

also das Problem ist, dass der cmk Agent bei dem Kommando
“cat /sys/fs/cgroup/cpuacct/cpuacct.stat” keinen Output bekommt. Damit fehlen die Informationen in der
<<<lxc_container_cpu>>> Sektion.

Die Sektion sollte wie folgt aussehen:

<<<lxc_container_cpu>>>
cpu  5104047 0 0 4641054413172266342 0 0 0 0 0 0
num_cpus 2
user 2274536
system 3808086

Bei Dir fehlen aber:

user 2274536
system 3808086

Was liegt bei Dir unter /sys/fs/cgroup/cpuacct/? Liegt da ĂĽberhaupt etwas?

Nein, das ganze Verzeichnis gibt es nicht:

root@checkmk:/sys/fs/cgroup# pwd
/sys/fs/cgroup
root@checkmk:/sys/fs/cgroup# ls -lisah
total 0
  2 0 drwxr-xr-x 4 root root 80 Nov 23 21:06 .
  2 0 drwxr-xr-x 8 root root  0 Jan  9 00:50 ..
  3 0 drwxr-xr-x 2 root root 60 Nov 16 15:41 cgmanager
923 0 drwxr-xr-x 2 root root  0 Jan  9 00:50 systemd

Der LXC Container läuft auf einem Proxmox 5.4.

Nun, bei mir läuft das unter Proxmox 6.x.
Ich hab allerdings wenig bis keinen Plan von cgroups und kann Dir daher nicht sagen, warum es diese sys Struktur bei Dir nicht gibt.

An der Stelle solltest Du mal weiter recherchieren, zum Anfang ggf. hier: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/resource_management_guide/sec-cpuacct

Hi,

vielen Dank, dass Du so genau debugged hast. :slight_smile:

Werde mir das demnächst mal anschauen und ggf noch mal berichten.

Die Wahrscheinlichkeit ist aber hoch, dass ich eh demnächst meinen Homeserver auf Proxmox 6 hochziehe. Mal gucken.

Viele GrĂĽĂźe
Christian