Docker node check_mk crash

Hi,

ich nutze die aktuelle Checkmk Raw Edition 2.4.0p17; Ich stelle meine Docker Nodes von Ubuntu 20.04 auf RockyL um, dabei ist mir folgendes aufgefallen.

Bei jedem cmk Update/Neustart werden die Container als offline gekennzeichnet, es dauert dann ein paar Minuten bis die wieder mit allen Services erkennt bzw. online sind.

Hab mir zuerst nix dabei gedacht, da es grundsätzlich funktioniert.
Die Abfrage auf der Konsole beendet sich aber unschön.

Docker version 29.1.2, build 890dcca

@docker_version_info|{“PluginVersion”: “0.1”, “DockerPyVersion”: “7.1.0”, “ApiVersion”: “1.52”}

[root@host plugins]# cat mk_docker.py | grep __version__

__version__ = "2.4.0p7"

cmk --debug -vvn host

[cpu_tracking] Stop [72b38cfe2ab0 - Snapshot(process=posix.times_result(user=0.030000000000000027, system=0.009999999999999981, children_user=0.0, children_system=0.0, elapsed=0.029999999329447746))]
Trying to acquire lock on /omd/sites/cmk/var/check_mk/crashes/base/34f5224c-d36a-11f0-8230-baf961ffeb7a/crash.info
Got lock on /omd/sites/cmk/var/check_mk/crashes/base/34f5224c-d36a-11f0-8230-baf961ffeb7a/crash.info
Releasing lock on /omd/sites/cmk/var/check_mk/crashes/base/34f5224c-d36a-11f0-8230-baf961ffeb7a/crash.info
Released lock on /omd/sites/cmk/var/check_mk/crashes/base/34f5224c-d36a-11f0-8230-baf961ffeb7a/crash.info
Traceback (most recent call last):
  File "/omd/sites/cmk/bin/cmk", line 157, in <module>
    exit_status = modes.call("--check", None, opts, args, trace_context)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/omd/sites/cmk/lib/python3/cmk/base/modes/__init__.py", line 91, in call
    return handler(*handler_args)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/omd/sites/cmk/lib/python3/cmk/base/modes/check_mk.py", line 2356, in mode_check
    error_handler,
    ^^^^^^^^^^^^^
  File "/omd/sites/cmk/lib/python3/cmk/base/errorhandling/_handler.py", line 66, in __exit__
    *_handle_failure(
     ^^^^^^^^^^^^^^^^
  File "/omd/sites/cmk/lib/python3/cmk/base/errorhandling/_handler.py", line 103, in _handle_failure
    raise exc
  File "/omd/sites/cmk/lib/python3/cmk/base/modes/check_mk.py", line 2374, in mode_check
    checks_result = execute_checkmk_checks(
                    ^^^^^^^^^^^^^^^^^^^^^^^
  File "/omd/sites/cmk/lib/python3/cmk/checkengine/checking/_checking.py", line 99, in execute_checkmk_checks
    _do_inventory_actions_during_checking_for(
  File "/omd/sites/cmk/lib/python3/cmk/checkengine/checking/_checking.py", line 134, in _do_inventory_actions_during_checking_for
    status_data_tree = inventorize_status_data_of_real_host(
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/omd/sites/cmk/lib/python3/cmk/checkengine/inventory.py", line 298, in inventorize_status_data_of_real_host
    return _create_trees_from_inventory_plugin_items(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/omd/sites/cmk/lib/python3/cmk/checkengine/inventory.py", line 425, in _create_trees_from_inventory_plugin_items
    for items_of_inventory_plugin in items_of_inventory_plugins:
                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/omd/sites/cmk/lib/python3/cmk/checkengine/inventory.py", line 355, in _collect_inventory_plugin_items
    for item in inventory_plugin.function(**kwargs)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/omd/sites/cmk/lib/python3/cmk/base/api/agent_based/register/inventory_plugins.py", line 36, in filtered_generator
    for element in generator(*args, **kwargs):
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/omd/sites/cmk/lib/python3/cmk/plugins/collection/agent_based/inventory_docker_node_network.py", line 35, in inventory_docker_node_network
    for container_id, container in sorted(network["Containers"].items()):
                                          ~~~~~~~^^^^^^^^^^^^^^
KeyError: 'Containers'

Folgende Einträge finden sich auf der Client Seite:
syslog/messages

2025-12-07T17:52:46.288103+01:00 host containerd\[766\]: time="2025-12-07T17:52:46.287899421+01:00" level=error msg="unable to parse \\"max 0\\" as a uint from Cgroup file \\"/sys/fs/cgroup/system.slice/docker-5512ba1b1d7c7cde3d59065463e9e2e6c5373eb913b3881cb91938fef6e3ab41.scope/hugetlb.1GB.events\\""
2025-12-07T17:52:46.289003+01:00 host containerd\[766\]: time="2025-12-07T17:52:46.288841346+01:00" level=error msg="unable to parse \\"max 0\\" as a uint from Cgroup file \\"/sys/fs/cgroup/system.slice/docker-ab5ee44f83edb7377945994370f057627c604b26add876984cba7f53d7dbcfe8.scope/hugetlb.2MB.events\\""
2025-12-07T17:52:46.289125+01:00 host containerd\[766\]: time="2025-12-07T17:52:46.288881476+01:00" level=error msg="unable to parse \\"max 0\\" as a uint from Cgroup file \\"/sys/fs/cgroup/system.slice/docker-ab5ee44f83edb7377945994370f057627c604b26add876984cba7f53d7dbcfe8.scope/hugetlb.1GB.events\\""
2025-12-07T17:52:46.289779+01:00 host containerd\[766\]: time="2025-12-07T17:52:46.289733118+01:00" level=error msg="unable to parse \\"max 0\\" as a uint from Cgroup file \\"/sys/fs/cgroup/system.slice/docker-5dde8131bf09eb52003fcdbb742e7623f8adeb1854265daa4295f273703924a1.scope/hugetlb.2MB.events\\""
2025-12-07T17:52:46.289912+01:00 host containerd\[766\]: time="2025-12-07T17:52:46.289852948+01:00" level=error msg="unable to parse \\"max 0\\" as a uint from Cgroup file \\"/sys/fs/cgroup/system.slice/docker-5dde8131bf09eb52003fcdbb742e7623f8adeb1854265daa4295f273703924a1.scope/hugetlb.1GB.events\\""

Habe auch Ubuntu 24.04 mal getestet, da ist es auch so.
Agent, Plugins und Docker sind aktuell Release

Habt Ihr noch einen Tipp für mich?

Die Fehler kommen vom containerd welcher in Version 2.2.0 einen Bug hat. Lässt sich nur durch Downgrade im Moment lösen.

Eine von vielen Github Issues zu dem Thema - massive logging bloat due to cgroup/hugeTLB interaction · Issue #12596 · containerd/containerd · GitHub

Denke nicht, dass der Fehler was mit dem Abfrageproblem zu tun hat.

Das Neustart Problem würde ich wie folgt angehen.
Raw Edition → Nagios Core → laufen die Instanzen im Docker Container? Wenn ja deutet das Problem darauf hin, dass der Status des Cores nicht ordentlich gespeichert wird beim Beenden. Normal sollte ja nach einem Update/Neustart der letzte Status geladen werden. Anderes Problem beim Nagios Core ist die lange Zeit nach einem Neustart bis alle Hosts/Services das erste mal wieder neu gecheckt werden. Hier kann man in der Nagios Config bisl Tuning machen und die Zeit bis zum ersten Check herunter setzen auf 1-2 Minuten.

Zum Crashreport selber hätte ich erstmal keine Erklärung.

Hallo Andreas,

danke für deine Antwort. Die neuste Docker API liefert keine Sektion „Containers“ mehr unter Netzwerk:

curl --unix-socket /var/run/docker.sock http://localhost/networks | jq .

inventory_docker_node_network.py haut’s dann weg.