Skip to content

A lot of checks are marked as overdue, but checks are actually run by icinga #10848

@alamp1360

Description

@alamp1360

Issue with overdue checks.

I am using the latest Icinga version ( v2.16.0-19-g6c73bb4af ).

All the Icinga services are running as docker containers. I am using IcingaDB and a MySQL database.

The issue is that i experience a lot of overdue service and host checks in IcingaWeb.

I tried to analyze the issue with claude code, and the AI tells me that the issue is caused by Icinga not updating the field icinga:nextupdate:service in Redis.
And indeed, when i check the value for one of the overdue services, i can see that it does not get updated.

IcingaCli:

ICINGA2_API_USERNAME=root ICINGA2_API_PASSWORD=pasword icinga2 console --connect 'https://localhost:5665/'
Icinga 2 (version: v2.16.0-19-g6c73bb4af)

<36> => DateTime(get_time()).to_string()
"2026-05-13 15:05:54 +0200"
<37> => get_service("servername", "servicename").icingadb_identifier
"9ead43c6c44fea483ca447ae41250db6ce4d9b96"
<38> => get_service("servername", "servicename").next_check + ": " + DateTime(get_service("servername", "servicename").next_check).to_string()
"1778677714.420000: 2026-05-13 15:08:34 +0200"
<39> => get_service("servername", "servicename").next_update + ": " + DateTime(get_service("servername", "servicename").next_update).to_string()
"1778678014.515168: 2026-05-13 15:13:34 +0200"

In Redis:

docker exec ff5db6698a2c redis-cli ZSCORE icinga:nextupdate:service 9ead43c6c44fea483ca447ae41250db6ce4d9b96 |  jq -r '. as $ts | {raw: $ts, human: ($ts | floor | strflocaltime("%Y-%m-%d %H:%M:%S"))}'
{
  "raw": 1778673826.963446,
  "human": "2026-05-13 14:03:46"
}

As one can see, the service state values for next_check and next_update are recent (Icingaweb does display the same values in the "Source" view of the service), but in redis, the nextupdate SortedSet for that service is very outdated. This field is used for deciding if a service is overdue.

Strange thing is that not all the checks are overdue. Currently there are about 4100 service checks not overdue and about 2500 service checks are overdue.

Claude told me that there seemed to be a change (Commit e88366d) from Icinga version 2.15.3 to more recent versions so that this field is no longer updated "directly" in IcingaDB::NewCheckResultHandler, but by a signal "OnNextCheckChanged". If this signal does not "fire" for some reason, then that field does not get updated in Redis.
Forgive me if this is nonsense, but maybe it helps :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions