Chapitre 59.  Trucs et astuces gain de temps dans les définitions de modèles d'objets

Comment ne pas pêter les plombs

Introduction

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.

Correspondance avec des expressions régulières

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.

Définitions de service

Hôtes multiples

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 ...
}
            

Tous les hôtes situés dans de multiples groupes d'hôtes :

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 ...
}
            

Tous les hôtes :

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 ...
}
            

Exclusion d'hôtes :

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 ...
}
            

Définitions d'escalade de service

Hôtes multiples

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 ...
}
            

Tous les hôtes situés dans de multiples groupes d'hôtes :

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 ...
}
            

Tous les hôtes :

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 ...
}
            

Exclusion d'hôtes :

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 ...
}
            

Tous les services d'un même hôte :

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 ...
}
            

Services multiples du même hôte :

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 ...
}
            

Tous les services de multiples groupes de services :

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 ...
}
            

Définitions de dépendance de service

Hôtes multiples

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 ...
}
            

Tous les hôtes situés dans de multiples groupes d'hôtes :

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 ...
}
            

Tous les services d'un même hôte :

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 ...
}
            

Services multiples d'un même hôte :

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 ...
}
            

Tous les services de multiples groupes de services :

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 ...
}
            

Dépendances sur le même hôte :

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 ...
}
            

Définitions d'escalade d'hôte

Hôtes multiples

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 ...
}
            

Tous les hôtes situés dans de multiples groupes d'hôtes :

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 ...
}
            

Tous les hôtes :

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 ...
}
            

Exclusion d'hôtes :

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 ...
}
            

Définitions de dépendance d'hôte

Hôtes multiples

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 ...
}
            

Tous les hôtes situés dans de multiples groupes d'hôtes :

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 ...
}
            

Groupes d'hôtes

Tous les hôtes :

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 ...
}