Yonas Habteab f049f5258a Checkable: update next_check ts in ExecuteCheck only if it's needed
Since the scheduler accounts for already running checks, we only need to
update the `next_check` timestamp in `Checkable::ExecuteCheck()` only
where it actually makes sense to do so, and as for local checks this
doesn't make sense at all. There only two cases where we need to update
the next check beforehand:

1) The execute command event is sent to a connected remote endpoint, so
   we need to set the next check to a time in the future until we actually
   receive the check result back from the remote endpoint. However, it must
   not be too far in the future to avoid that the check is not re-run for
   too long in case the remote endpoint never responds.
2) The check is a remote check, but either the endpoint is currently syncing
   replay logs or not connected at all, and we are within the magical 5min
   cold startup window. In these cases, the check is effectively skipped, and
   there will be no check result for it coming in, we manually update the next
   check normally as if the check was executed.

In the other cases, either the check is executed locally, which means the
`m_RunningCheck` flag already prevents the scheduler from re-running the check,
or this is a remote check and the endpoint is not connected, but we are outside
the cold startup window, in which case we also don't do anything as we've already
called `Checkable::ProcessCheckResult()` with an appropriate error state, which
in turn will call `Checkable::UpdateNextCheck()`.
2025-09-24 10:15:41 +02:00
2025-08-28 16:09:46 +02:00
2025-06-17 11:15:16 +02:00
2025-06-17 14:03:01 +02:00
2025-06-17 14:03:01 +02:00
2019-09-17 12:54:43 +02:00
2018-10-18 09:50:53 +02:00
2021-08-05 11:41:57 +02:00

Github Tag

Icinga 2

Icinga Logo

Table of Contents

  1. About
  2. Installation
  3. Documentation
  4. Support
  5. License
  6. Contributing

About

Icinga is a monitoring system which checks the availability of your network resources, notifies users of outages, and generates performance data for reporting.

Scalable and extensible, Icinga can monitor large, complex environments across multiple locations.

Icinga 2 is the monitoring server and requires Icinga Web 2 on top in your Icinga Stack. The configuration can be easily managed with either the Icinga Director, config management tools or plain text within the Icinga DSL.

Icinga Dashboard

Installation

Once Icinga Server and Web are running in your distributed environment, make sure to check out the many Icinga modules for even better monitoring.

Documentation

The documentation is available on icinga.com/docs.

Support

Check the project website for status updates. Join the community channels for questions or ask an Icinga partner for professional support.

License

Icinga 2 and the Icinga 2 documentation are licensed under the terms of the GNU General Public License Version 2, you will find a copy of this license in the COPYING file included in the source package.

In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two.

You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here.

Contributing

There are many ways to contribute to Icinga -- whether it be sending patches, testing, reporting bugs, or reviewing and updating the documentation. Every contribution is appreciated!

Please continue reading in the contributing chapter.

If you are a packager, please read the development chapter for more details.

Security Issues

For reporting security issues please visit this page.

Description
The core of our monitoring platform with a powerful configuration language and REST API.
Readme 202 MiB
Languages
C++ 92.7%
CMake 2.7%
PLpgSQL 2%
C# 0.6%
Shell 0.5%
Other 1.4%