Werk #22312: Consistently refuse to monitor hosts without a usable IP address
| Component | Core & setup | ||
| Title | Consistently refuse to monitor hosts without a usable IP address | ||
| Date | Sep 23, 2026 | ||
| Level | Trivial Change | ||
| Class | Bug Fix | ||
| Compatibility | Compatible - no manual interaction needed | ||
| Checkmk versions & editions |
|
If the IP address of a host cannot be resolved and none is configured
explicitly, Checkmk assigns the unspecified address 0.0.0.0 or ::. Neither
of them is a destination: on Linux both reach the local system, so a fetcher
pointed at one talks to the Checkmk site itself instead of to the host.
Some code paths already recognised this and refused to act, others did not. All of them do now. For a host whose address family is IPv4, IPv6 or dual stack, and whose address is the unspecified one, these sources are no longer executed:
- the Checkmk agent (TCP) and SNMP, which already behaved this way,
- special agents,
- datasource programs whose command line uses the host address, that is one of
the macros
$HOSTADDRESS$,$HOST_ADDRESS_4$,$_HOSTADDRESS_4$,$HOST_ADDRESS_6$,$_HOSTADDRESS_6$or<IP>.
They report:
Failed to lookup IP address and no explicit IP address configured
Special agents are included as a whole because a special agent builds its
command line itself and may use the host address through the $HOSTADDRESS$
macro, so Checkmk cannot tell which ones do. A datasource program, in contrast,
is a command line you wrote, and Checkmk can see whether it mentions the
address. One that does not keeps running.
A special agent that needs no host address belongs to a host with the address family "No IP", as the documentation of the agents in question states. Those hosts are not affected by this werk, and neither are hosts whose name resolves or which have an explicit IP address configured.
Hosts matched by the rule set "Hosts with dynamic DNS lookup" are not affected
either. Checkmk deliberately does not resolve those while writing the
configuration: it passes the host name on in place of an address and the lookup
happens when the check runs. Such a host therefore never carries the
unspecified address. The one exception is an explicitly configured address,
which takes precedence over the dynamic lookup: an explicit 0.0.0.0 or ::
is refused for these hosts as well.