Table des matières
Comment ne pas pêter les plombs
Cette documentation va essayer de vous expliquer comment vous pouvez exploiter les fonctionnalités (quelque peu) cachées des définitions d'objets basées sur des modèles histoire de ne pas pêter les plombs. Comment, me demanderez-vous ? Plusieurs types d'objets permettent de spécifier de multiples noms d'hôtes et/ou de groupes d'hôtes dans les définitions, vous permettant de copier la défintion de l'objet dans de multiples hôtes ou services. Je vais parcourir séparement chaque type d'objet permettant cette fonctionnalité. Pour commencer, les types d'objets concernés sont les suivants :
Les types d'objets qui ne sont pas listés ci-dessus (par exexmple les périodes de temps, les commandes) ne supportent pas les fonctionnalités que je vais vous décrire maintenant.
Les exemples que je donne ci-dessous utilisent une correspondance standard avec les noms des objets. Si vous le souhaitez, vous pouvez activer la correspondance des noms d'objets avec des expressions régulières grâce au paramètre de configuration use_regexp_matching
Par défaut, les expressions régulières ne sont utilisées que dans les noms d'objets contenant les caractères de remplacement *, ?, + ou \.. Si vous souhaitez voir les expressions régulières appliquées sur tous les noms d'objets, activez le paramètre de configuration use_true_regexp_matching
. Les expressions régulières peuvent être utilisées dans n'importe quel champ des exemples ci-dessous (noms d'hôtes, noms de groupe d'hôtes, noms de service, et noms de groupes de service).
Attention lorsque vous activez les expressions régulières - vous aurez peut-être à modifier votre fichier de configuration, pour éviter que des paramètres que vous ne souhaitez pas voir interprétés comme des expressions régulières ne le soient ! Les problèmes devraient être mis en évidence lorsque vous vérifiez votre configuration.
Si vous voulez créer des services identiques assignés à plusieurs hôtes, vous pouvez préciser plusieurs hôtes dans le paramètre host_name
. La définition ci-dessous va créer une service nommé SOMESERVICE
sur les hôtes HOST1
jusqu'à HOSTN
. Toutes les instances du service SOMESERVICE
devraient être identiques (c.-à-d. auront la même commande de contrôle, le même nombre maximum d'essais, la même période de notification).
define service { host_name HOST1,HOST2,HOST3,...,HOSTN service_description SOMESERVICE other service directives ... }
Si vous voulez créer des services identiques, assignés à tous les hôtes d'un ou de plusieurs groupes d'hôtes, vous pouvez le faire en une seule définition de service. Comment ? Le paramètre hostgroup_name
vous permet de spécifier un ou plusieurs groupes d'hôtes pour lesquels le service doit être créé. La définition ci-dessous va créer un service appellé SOMESERVICE
sur tous les hôtes membres des groupes d'hôtes HOSTGROUP1
à HOSTGROUPN
. Toutes les instances du service SOMESERVICE
seront identiques (c.-à-d. auront la même commande de contrôle, le même nombre maximum d'essais, la même période de notification, etc.).
define service { hostgroup_name HOSTGROUP1,HOSTGROUP2,...,HOSTGROUPN service_description SOMESERVICE other service directives ... }
Si vous voulez créer des services identiques, assignés à tous les hôtes de vos fichiers de configurations, vous pouvez utiliser un caractère de remplacement dans le paramètre host_name
. La définition ci-dessous va créer un service appellé SOMESERVICE
sur tous les hôtes définis dans vos fichiers de configurations. Toutes les instances du service SOMESERVICE
seront identiques (c.-à-d. auront la même commande de contrôle, le même nombre maximum d'essais, la même période de notification, etc.).
define service { host_name * service_description SOMESERVICE other service directives ... }
Si vous voulez créer des services identiques sur plusieurs hôtes ou groupes d'hôtes, mais désirez exclure certains hôtes de la définition, vous pouvez le faire en précédant l'hôte ou le groupe d'hôte du symbole !.
define service { host_name HOST1,HOST2,!HOST3,!HOST4,...,HOSTN hostgroup_name HOSTGROUP1,HOSTGROUP2,!HOSTGROUP3,!HOSTGROUP4,...,HOSTGROUPN service_description SOMESERVICE other service directives ... }
Si vous voulez créer des escalade de service pour des services portant le même nom/description, et qui sont assignés à plusieurs hôtes, vous pouvez spécifier des hôtes multiples dans le paramètre host_name
. La définition ci-dessous va créer une escalade pour les services appelés SOMESERVICE
sur les hôtes HOST1
à HOSTN
. Toutes les instances de l'escalade de service seront identiques (c.-à-d. auront le même groupe de contact, le même intervalle de notification, etc.). .
define serviceescalation { host_name HOST1,HOST2,HOST3,...,HOSTN service_description SOMESERVICE other escalation directives ... }
Si vous voulez créer une escalade de service pour des services portant le même nom/description et qui sont assignés à tous les hôtes dans un ou plusieurs groupes d'hôtes, vous pouvez le faire avec le paramètre hostgroup_name
. La définition ci-dessous va créer une escalade pour les services appelés SOMESERVICE
sur tous les hôtes membres des groupes HOSTGROUP1
à HOSTGROUPN
. Toutes les instances de l'escalade de service seront identiques (c.-à-d. auront le même groupe de contact, le même intervalle de notification, etc.).
define serviceescalation { hostgroup_name HOSTGROUP1,HOSTGROUP2,...,HOSTGROUPN service_description SOMESERVICE other escalation directives ... }
Si vous voulez créer une escalade de service identique pour des services portant le même nom/description et qui sont assignés à tous les hôtes définis dans vos fichiers de configuration, vous pouvez utiliser un caractère de remplacement dans le paramètre host_name
. La définition ci-dessous va créer une escalade pour tous les services appelés SOMESERVICE
de tous les hôtes définis dans vos fichiers de configuration. Toutes les instances de l'escalade de service seront identiques (c.-à-d. auront le même groupe de contact, le même intervalle de notification, etc.).
define serviceescalation { host_name * service_description SOMESERVICE other escalation directives ... }
Si vous voulez créer des escalades de services identiques sur plusieurs hôtes ou groupes d'hôtes, mais désirez exclure certains hôtes de la définition, vous pouvez le faire en précédant l'hôte ou le groupe d'hôte du symbole !.
define serviceescalation { host_name HOST1,HOST2,!HOST3,!HOST4,...,HOSTN hostgroup_name HOSTGROUP1,HOSTGROUP2,!HOSTGROUP3,!HOSTGROUP4,...,HOSTGROUPN service_description SOMESERVICE other escalation directives ... }
Si vous voulez créer des escalades de service pour tous les services assignés à un hôte précis, vous pouvez utiliser un caractère de remplacement dans le paramètre service_description
. La définition ci-dessous va créer une escalade de service pour tous les services de l'hôte HOST1
. Toutes les instances de l'escalade de service seront identiques (c.-à-d. auront le même groupe de contact, le même intervalle de notification, etc.).
Si vous vous sentez l'esprit particulièrement aventureux, vous pouvez spécifier un caractère de remplacement à la fois dans les paramètres host_name
et service_description
. Cela va créer une escalade de service pour tous les services définis dans vos fichiers de configuration.
define serviceescalation { host_name HOST1 service_description * other escalation directives ... }
Si vous voulez créer des escalades de service pour plusieurs services assignés à un hôte précis, vous pouvez spécifier plusieurs descriptions de service dans le paramètre service_description
. La définition ci-dessous va créer une escalade pour les services SERVICE1
à SERVICEN
de l'hôte tHOST1
. Toutes les instances de l'escalade de service seront identiques (c.-à-d. auront le même groupe de contact, le même intervalle de notification, etc.).
define serviceescalation { host_name HOST1 service_description SERVICE1,SERVICE2,...,SERVICEN other escalation directives ... }
Si vous voulez créer des escalades de service pour tous les services appartenant à un ou plusieurs groupes de services, vous pouvez utiliser le paramètre servicegroup_name
. La définition ci-dessous va créer une escalade pour tous les services membres des groupes de services SERVICEGROUP1 à SERVICEGROUPN
. Toutes les instances de l'escalade de service seront identiques (c.-à-d. auront le même groupe de contact, le même intervalle de notification, etc.).
define serviceescalation { servicegroup_name SERVICEGROUP1,SERVICEGROUP2,...,SERVICEGROUPN other escalation directives ... }
Si vous voulez créer des dépendances de service pour des services portant le même nom/description, et qui sont assignés à plusieurs hôtes, vous pouvez spécifier de multiples hôtes dans les paramètres host_name
et/ou dependent_host_name
. Dans l'exemple ci-dessous, le service SERVICE2
des hôtes HOST3
et HOST4
sera dépendants du service SERVICE1
des hôtes HOST1
et HOST2
. Toutes les instances de la dépendance de service seront identiques, mis à part les noms d'hôtes (c.-à-d. auront le même critère d'échec de notification, etc.).
define servicedependency { host_name HOST1,HOST2 service_description SERVICE1 dependent_host_name HOST3,HOST4 dependent_service_description SERVICE2 other dependency directives ... }
Si vous voulez créer des dépendances de service pour des services portant le même nom/description, et qui sont assignés à tous les hôtes d'un ou plusieurs groupes d'hôtes, vous pouvez utiliser le paramètre hostgroup_name
et/ou dependent_hostgroup_name
. Dans l'exemple ci-dessous, le service SERVICE2
de tous les hôtes membres des groupes d'hôtes HOSTGROUP3
et HOSTGROUP4
sera dépendant du service SERVICE1
de tous les hôtes membres des groupes d'hôtes HOSTGROUP1
et HOSTGROUP2
. Si l'on suppose qu'il y a cinq hôtes dans chacun des groupes d'hôtes, cette définition équivaut à créer 100 définitions simples de dépendance de service ! Toutes les instances de la dépendance de service seront identiques, mis à part les noms d'hôtes (c.-à-d. auront le même critère d'échec de notification, etc.).
define servicedependency { hostgroup_name HOSTGROUP1,HOSTGROUP2 service_description SERVICE1 dependent_hostgroup_name HOSTGROUP3,HOSTGROUP4 dependent_service_description SERVICE2 other dependency directives ... }
Si vous voulez créer des dépendances de service pour tous les services assignés à un hôte précis, vous pouvez utiliser un caractère de remplacement dans les paramètres service_description
et/ou dependent_service_description
. Dans l'exemple ci-dessous, tous les services de l'hôte HOST2
seront dépendants de tous les services de l'hôte HOST1
. Toutes les instances de la dépendance de service seront identiques (c.-à-d. auront le même critère d'échec de notification, etc.).
define servicedependency { host_name HOST1 service_description * dependent_host_name HOST2 dependent_service_description * other dependency directives ... }
Si vous voulez créer des dépendances de service pour plusieurs services assignés à un hôte précis, vous pouvez spécifier plusieurs descriptions de service dans les paramètres service_description
et/ou dependent_service_description
comme suit :
define servicedependency { host_name HOST1 service_description SERVICE1,SERVICE2,...,SERVICEN dependent_host_name HOST2 dependent_service_description SERVICE1,SERVICE2,...,SERVICEN other dependency directives ... }
Si vous voulez créer des dépendances de service pour tous les services appartenant à un ou plusieurs groupes de services, vous pouvez utiliser les paramètres servicegroup_name
et/ou dependent_servicegroup_name
comme suit :
define servicedependency { servicegroup_name SERVICEGROUP1,SERVICEGROUP2,...,SERVICEGROUPN dependent_servicegroup_name SERVICEGROUP3,SERVICEGROUP4,...SERVICEGROUPN other dependency directives ... }
Si vous voulez créer des dépendances de service pour plusieurs services dépendants de services sur le même hôte, laissez les paramètres dependent_host_name
et dependent_hostgroup_name
vides. L'exemple ci-dessous part du principe que les hôtes HOST1 et HOST2 ont un minimum de quatre services associés avec eux : SERVICE1
, SERVICE2
, SERVICE3
, et SERVICE4
. Dans cet exemple, SERVICE3
et SERVICE4
sur HOST1
seront dépendants à la fois de SERVICE1
et SERVICE2
sur HOST1
. De façon identique, SERVICE3
et SERVICE4
sur HOST2
seront dépendants à la fois de SERVICE1
et SERVICE2
sur HOST2
.
define servicedependency { host_name HOST1,HOST2 service_description SERVICE1,SERVICE2 dependent_service_description SERVICE3,SERVICE4 other dependency directives ... }
Si vous souhaitez créer des escalades d'hôte pour plusieurs hôtes, vos pouvez spécifier plusieurs hôtes dans le paramètre host_name
. La définition ci-dessous va créer une escalade d'hôte pour les hôtes HOST1
à HOSTN
. Toutes les instances de l'escalade d'hôte seront identiques (c.-à-d. auront les mêmes groupes de contacts, le même intervalle de notification, etc.).
define hostescalation { host_name HOST1,HOST2,HOST3,...,HOSTN other escalation directives ... }
Si vous voulez créer des escalades d'hôte pour tous les hôtes d'un ou plusieurs groupes d'hôtes, vos pouvez utiliser le paramètre hostgroup_name
. La définition ci-dessous va créer une escalade d'hôte sur tous les hôtes membres des groupes d'hôtes HOSTGROUP1
à HOSTGROUPN
. Toutes les instances de l'escalade d'hôte seront identiques (c.-à-d. auront les mêmes groupes de contacts, le même intervalle de notification, etc.).
define hostescalation { hostgroup_name HOSTGROUP1,HOSTGROUP2,...,HOSTGROUPN other escalation directives ... }
Si vous voulez créer des escalades d'hôte identiques pour tous les hôtes définis dans vos fichiers de configuration, vous pouvez utiliser un caractère de remplacement dans le paramètre host_name
. La définition ci-dessous va créer une escalade d'hôte sur tous les hôtes définis dans vos fichiers de configuration. Toutes les instances de l'escalade d'hôte seront identiques (c.-à-d. auront les mêmes groupes de contacts, le même intervalle de notification, etc.).
define hostescalation { host_name * other escalation directives ... }
Si vous voulez créer des escalades d'hôtes identiques sur plusieurs hôtes ou groupes d'hôtes, mais désirez exclure certains hôtes de la définition, vous pouvez le faire en précédant l'hôte ou le groupe d'hôte du symbole !.
define hostescalation{ host_name HOST1,HOST2,!HOST3,!HOST4,...,HOSTN hostgroup_name HOSTGROUP1,HOSTGROUP2,!HOSTGROUP3,!HOSTGROUP4,...,HOSTGROUPN other escalation directives ... }
Si vous voulez créer des dépendances d'hôte pour plusieurs hôtes, vous pouvez spécifier plusieurs hôtes dans les paramètres host_name
et/ou dependent_host_name
. La définition ci-dessous équivaut à créer six dépendances d'hôte distinctes. Dans l'exemple ci-dessus, les hôtes HOST3
, HOST4
et HOST5
seront dépendants à la fois d'HOST1
et de HOST2
. Toutes les instances de la dépendance d'hôte seront identiques, à l'exception des noms d'hôtes (c.-à-d. auront le même critère d'échec de notification, etc.).
define hostdependency { host_name HOST1,HOST2 dependent_host_name HOST3,HOST4,HOST5 other dependency directives ... }
Si vous désirez créer des dépendances d'hôte pour tous les hôtes d'un ou plusieurs groupes d'hôtes, vous pouvez utiliser les paramètres hostgroup_name
et/ou dependent_hostgroup_name
. Dans l'exemple ci-dessous, tous les hôtes des groupes d'hôtes HOSTGROUP3
et HOSTGROUP4
seront dépendants de tous les hôtes des groupes d'hôtes HOSTGROUP1
et HOSTGROUP2
. Toutes les instances de la dépendance d'hôte seront identiques, à l'exception des noms d'hôtes (c.-à-d. auront le même critère d'échec de notification, etc.).
define hostdependency { hostgroup_name HOSTGROUP1,HOSTGROUP2 dependent_hostgroup_name HOSTGROUP3,HOSTGROUP4 other dependency directives ... }
Si vous voulez créer un groupe d'hôte contenant tous les hôtes définis dans vos fichiers de configuration, vous pouvez utiliser un caractère de remplacement dans le paramètre members
. La définition ci-dessous créera un groupe d'hôtes appelé HOSTGROUP1
contenant tous les hôtes définis dans vos fichiers de configuration.
define hostgroup { hostgroup_name HOSTGROUP1 members * other hostgroup directives ... }