From bcd16cbfb05666bb8cd74cd65d5c723c4e8d66c3 Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Wed, 5 Apr 2023 14:46:35 +0200 Subject: [PATCH] Rewrite Dependency redundancy groups docs --- doc/03-monitoring-basics.md | 21 +++++++++++++++++++++ doc/09-object-types.md | 12 +----------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/doc/03-monitoring-basics.md b/doc/03-monitoring-basics.md index 79ef8cc5d..0c5281272 100644 --- a/doc/03-monitoring-basics.md +++ b/doc/03-monitoring-basics.md @@ -2738,6 +2738,27 @@ apply Dependency "internet" to Service { } ``` +### Redundancy Groups + +Sometimes you want dependencies to accumulate, +i.e. to consider the parent reachable only if no dependency is violated. +Sometimes you want them to be regarded as redundant, +i.e. to consider the parent unreachable only if no dependency is fulfilled. +Think of a host connected to both a network and a storage switch vs. a host connected to redundant routers. + +Sometimes you even want a mixture of both. +Think of a service like SSH depeding on both LDAP and DNS to function, +while operating redundant LDAP servers as well as redundant DNS resolvers. + +Before v2.12, Icinga regarded all dependecies as cumulative. +In v2.12 and v2.13, Icinga regarded all dependencies redundant. +The latter led to unrelated services being inadvertantly regarded to be redundant to each other. + +v2.14 restored the former behavior and allowed to override it. +I.e. all dependecies are regarded as essential for the parent by default. +Specifying the `redundancy_group` attribute for two dependecies of a child object with the equal value +causes them to be regarded as redundant (only inside that redundancy group). + diff --git a/doc/09-object-types.md b/doc/09-object-types.md index af8075772..6763b6a87 100644 --- a/doc/09-object-types.md +++ b/doc/09-object-types.md @@ -201,7 +201,7 @@ Configuration Attributes: parent\_service\_name | Object name | **Optional.** The parent service. If omitted, this dependency object is treated as host dependency. child\_host\_name | Object name | **Required.** The child host. child\_service\_name | Object name | **Optional.** The child service. If omitted, this dependency object is treated as host dependency. - redundancy\_group | String | **Optional.** Puts the dependency into a group of mutually redundant ones. See discussion below. + redundancy\_group | String | **Optional.** Puts the dependency into a group of [mutually redundant ones](03-monitoring-basics.md#dependencies-redundancy-groups). disable\_checks | Boolean | **Optional.** Whether to disable checks (i.e., don't schedule active checks and drop passive results) when this dependency fails. Defaults to false. disable\_notifications | Boolean | **Optional.** Whether to disable notifications when this dependency fails. Defaults to true. ignore\_soft\_states | Boolean | **Optional.** Whether to ignore soft states for the reachability calculation. Defaults to true. @@ -219,16 +219,6 @@ Up Down ``` -Redundancy groups: - -Sometimes, you want a dependencies to accumulate (e.g., the parent considered reachable only if no dependency is violated), sometimes you want them to be regarded as redundant (e.g., the parent considered unreachable only if no dependency is fulfilled) or even a mixture of both. Think of a host connected to both a network and a storage switch vs. a host connected to redundant routers or a service like SSH depeding on both LDAP and DNS to function, while operating redundant LDAP servers as well as redundant DNS resolvers. - -Behaviour prior to 2.12.0 was to regard all dependecies as cumulative; 2.12.0 made all dependencies regareded redundant. -This may lead to unrelated services inadvertantly regarded to be redundant to each other. - -Specifying a `redundancy_group` causes a dependency to be regarded as redundant only inside that redundancy group. -Dependencies lacking a `redundancy_group` attribute are regarded as essential for the parent. - When using [apply rules](03-monitoring-basics.md#using-apply) for dependencies, you can leave out certain attributes which will be automatically determined by Icinga 2.