節省時間的對象定義提示
介紹
本文檔試圖解釋如何利用基于模板的對象定義的(某種)隱藏功能來節省理智。您怎么問?幾種類型的對象允許您在定義中指定多個主機名和/或主機組名稱,從而可以將對象定義“復制”到多個主機或服務。我將分別介紹支持這些功能的每種對象。對于初學者,支持此省時功能的對象類型如下:
上面未列出的對象類型(例如時間段,命令等)不支持我將要描述的功能。
正則表達式匹配
我在下面給出的示例使用對象名稱的“標準”匹配,將* require * use_regexp_matching設置為* disabled *。
如果需要,可以使用use_regexp_matching config選項為對象名稱啟用正則表達式匹配。默認情況下,正則表達式匹配將只在包含對象名稱中使用***,?,+或\。**。如果要在所有對象名稱上使用正則表達式匹配,請啟用use_true_regexp_matching配置選項。可以在以下示例中使用的任何字段(主機名,主機組名,服務名和服務組名)中使用正則表達式。
注意:啟用正則表達式匹配時要小心-您可能必須更改配置文件,因為某些指令可能不希望被解釋為正則表達式。驗證配置后,任何問題都應該顯而易見。
服務定義
多主機
如果要創建分配給多個主機的相同服務,則可以在host_name指令中指定多個主機。以下定義將在主機HOST1至HOSTN上創建一個名為SOMESERVICE的服務。SOMESERVICE服務的所有實例都是相同的(即具有相同的檢查命令,最大檢查嘗試次數,通知時間等)。
定義服務 {
host_name HOST1,HOST2,HOST3,…,HOSTN
service_description SOMESERVICE
其他服務指令 …
}
多個主機組中的所有主機
如果要創建分配給一個或多個主機組中所有主機的相同服務,則可以通過創建一個服務定義來實現。該hostgroup_name指令允許你指定一個或多個hostgroups該服務應該被創建的名稱。以下定義將在屬于主機組HOSTGROUP1到HOSTGROUPN的所有主機上創建一個名為SOMESERVICE的服務。SOMESERVICE服務的所有實例都是相同的(即具有相同的檢查命令,最大檢查嘗試次數,通知時間等)。
定義服務 {
hostgroup_name HOSTGROUP1,HOSTGROUP2,…,HOSTGROUPN
service_description SOMESERVICE
其他服務指令 …
}
所有主持人
如果要創建分配給配置文件中定義的所有主機的相同服務,則可以在host_name指令中使用通配符。下面的定義將在配置文件中定義的所有主機上創建一個名為SOMESERVICE的服務。SOMESERVICE服務的所有實例都是相同的(即具有相同的檢查命令,最大檢查嘗試次數,通知時間等)。
定義服務 {
host_name *
service_description SOMESERVICE
其他服務指令 …
}
排除主機
如果要在多個主機或主機組上創建相同的服務,但想從定義中排除某些主機,可以通過在主機或主機組前面加!來實現。符號。
定義服務 {
host_name HOST1,HOST2,!HOST3,!HOST4,…,HOSTN
hostgroup_name HOSTGROUP1,HOSTGROUP2,!HOSTGROUP3,!HOSTGROUP4,…,HOSTGROUPN
service_description SOMESERVICE
其他服務指令 …
}
服務升級定義
多主機
如果要為分配給多個主機的相同名稱/描述的服務創建服務升級,則可以在host_name指令中指定多個主機。以下定義將在主機HOST1至HOSTN上為稱為SOMESERVICE的服務創建服務升級。服務升級的所有實例都是相同的(即具有相同的聯系人組,通知間隔等)。
定義serviceescalation {
host_name HOST1,HOST2,HOST3,…,HOSTN
service_description SOMESERVICE
其他升級指令 …
}
多個主機組中的所有主機
如果要為分配給一個或多個主機組中所有主機的相同名稱/描述的服務創建服務升級,則可以使用hostgroup_name指令。以下定義將在屬于主機組HOSTGROUP1到HOSTGROUPN的所有主機上為稱為SOMESERVICE的服務創建服務升級。服務升級的所有實例都是相同的(即具有相同的聯系人組,通知間隔等)。
定義serviceescalation {
hostgroup_name HOSTGROUP1,HOSTGROUP2,…,HOSTGROUPN
SERVICE_DESCRIPTION SOMESERVICE
其他升級指令 ……
}
所有主持人
如果要為分配給配置文件中定義的所有主機的相同名稱/描述的服務創建相同的服務升級,則可以在host_name指令中使用通配符。以下定義將在配置文件中定義的所有主機上為所有稱為SOMESERVICE的服務創建服務升級。服務升級的所有實例都是相同的(即具有相同的聯系人組,通知間隔等)。
定義serviceescalation {
host_name *
service_description SOMESERVICE
其他升級指令 …
}
排除主機
如果要為多個主機或主機組上的服務創建相同的服務升級,但想從定義中排除某些主機,則可以通過在主機或主機組前面加!來實現。符號。
定義serviceescalation {
host_name HOST1,HOST2,!HOST3,!HOST4,…,HOSTN
hostgroup_name HOSTGROUP1,HOSTGROUP2,!HOSTGROUP3,!HOSTGROUP4,…,HOSTGROUPN
service_description SOMESERVICE
其他升級指令 …
}
同一主機上的所有服務
如果要為分配給特定主機的所有服務創建服務升級,則可以在service_description指令中使用通配符。以下定義將為主機HOST1上的所有服務創建服務升級。服務升級的所有實例都是相同的(即具有相同的聯系人組,通知間隔等)。
如果您想冒險,可以在host_name和service_description指令中指定通配符。這樣做會為您在配置文件中定義的所有服務創建服務升級。
定義serviceescalation {
host_name HOST1
service_description *
其他升級指令 …
}
同一主機上的多種服務
如果要為分配給特定主機的所有多個服務創建服務升級,則可以在service_description指令中使用一個以上的服務描述。以下定義將在主機HOST1上通過SERVICEN創建服務SERVICE1的服務升級。服務升級的所有實例都是相同的(即具有相同的聯系人組,通知間隔等)。
定義serviceescalation {
host_name HOST1
service_description SERVICE1,SERVICE2,…,SERVICEN
其他升級指令 …
}
多個服務組中的所有服務
如果要為一個或多個服務組中的所有服務創建服務升級,則可以使用servicegroup_name指令。以下定義將為屬于服務組SERVICEGROUP1到SERVICEGROUPN的所有服務創建服務升級。服務升級的所有實例都是相同的(即具有相同的聯系人組,通知間隔等)。
定義serviceescalation {
servicegroup_name SERVICEGROUP1,SERVICEGROUP2,…,SERVICEGROUPN
其他升級指令 ……
}
服務依賴項定義
多主機
如果要為分配給多個主機的相同名稱/描述的服務創建服務依賴關系,則可以在host_name和/或dependent_host_name指令中指定多個主機。在下面的例子中,服務服務2的主機HOST3和主機4將取決于服務服務1上的主機HOST1和HOST2。除了主機名(即具有相同的通知失敗條件等)之外,服務依賴項的所有實例都將相同。
定義servicedependency {
HOST_NAME HOST1,HOST2
SERVICE_DESCRIPTION 服務1
dependent_host_name HOST3,主機4
dependent_service_description 服務2
其他依賴指令 ……
}
多個主機組中的所有主機
如果要為分配給一個或多個主機組中所有主機的相同名稱/描述的服務創建服務依賴項,則可以使用hostgroup_name和/或dependent_hostgroup_name指令。在下面的例子中,服務客服2在hostgroups所有主機HOSTGROUP3和HOSTGROUP4將取決于服務服務1在hostgroups所有主機HOSTGROUP1和HOSTGROUP2。假設每個主機組中有五個主機,則此定義等同于創建100個單個服務依賴項定義!除了主機名(即具有相同的通知失敗條件等)之外,服務依賴項的所有實例都將相同。
定義servicedependency {
hostgroup_name HOSTGROUP1,HOSTGROUP2
SERVICE_DESCRIPTION 服務1
dependent_hostgroup_name HOSTGROUP3,HOSTGROUP4
dependent_service_description 服務2
其他依賴指令 ……
}
主機上的所有服務
如果要為分配給特定主機的所有服務創建服務依賴關系,則可以在service_description和/或dependent_service_description指令中使用通配符。在下面的例子中,所有服務在主機HOST2將取決于所有服務在主機HOST1。服務依賴關系的所有實例都是相同的(即具有相同的通知失敗條件,等等)。
定義servicedependency {
HOST_NAME HOST1
SERVICE_DESCRIPTION *
dependent_host_name HOST2
dependent_service_description *
其他依賴指令 ……
}
主機上的多種服務
如果要為分配給特定主機的多個服務創建服務依賴關系,則可以在service_description和/或dependent_service_description偽指令中指定多個服務描述,如下所示:
定義servicedependency {
HOST_NAME HOST1
SERVICE_DESCRIPTION 服務1,服務2,…,SERVICEN
dependent_host_name HOST2
dependent_service_description 服務1,服務2,…,SERVICEN
其他依賴指令 ……
}
多個服務組中的所有服務
如果要為一個或多個服務組中的所有服務創建服務依賴項,則可以使用servicegroup_name和/或dependent_servicegroup_name指令,如下所示:
定義servicedependency {
servicegroup_name SERVICEGROUP1,SERVICEGROUP2,…,SERVICEGROUPN
dependent_servicegroup_name SERVICEGROUP3,SERVICEGROUP4,… SERVICEGROUPN
其他依賴指令 ……
}
相同的主機依賴關系
如果要為依賴于同一主機上服務的多個服務創建服務依賴關系,請把dependent_host_name和dependent_hostgroup_name指令保留為空。下面的例子假定主機HOST1和HOST2至少有以下與之相關聯的四種服務:服務1,服務2,SERVICE 3和服務4。在這個例子中,SERVICE 3和服務4上HOST1將依賴于兩個服務1和服務2上HOST1。同樣,SERVICE 3和服務4上HOST2將取決于這兩個服務1和服務2在HOST2。
定義servicedependency
HOST_NAME HOST1,HOST2
SERVICE_DESCRIPTION 服務1,服務2
dependent_service_description SERVICE 3,服務4
其他依賴指令 ……
}
使用通配符的相同主機依賴性
如果您擁有像NCPA這樣的代理,則可以使用agent_version檢查SERVICE1作為主服務。然后,可以將通配符用于dependent_service_description,以便該主機上的所有服務都取決于SERVICE1的狀態。最后,您將SERVICE1 排除在dependent_service_description中,因為它不能依賴于自身。
定義servicedependency
HOST_NAME HOST1,HOST2,HOST3,…,HOSTN
SERVICE_DESCRIPTION 服務1
dependent_service_description * ,!服務1
其他依賴指令 ……
}
與服務組相同的主機依賴關系
如果要為運行依賴服務的同一主機上的服務上屬于一個或多個服務組的所有服務創建服務依賴關系,請將host_name和hostgroup_name指令保留為空。下面的示例假定運行屬于SERVICEGROUP1和SERVICEGROUP2的服務的主機具有與之關聯的以下服務:SERVICE1。在此示例中,屬于SERVICEGROUP1和SERVICEGROUP2的所有服務都將依賴于運行依賴服務的同一主機上的SERVICE1。
定義servicedependency {
SERVICE_DESCRIPTION 服務1
dependent_servicegroup_name SERVICEGROUP1,SERVICEGROUP2
其他依賴指令 ……
}
主機升級定義
多主機
如果要為多個主機創建主機升級,則可以在host_name指令中指定多個主機。以下定義將為主機HOST1至HOSTN創建主機升級。主機升級的所有實例都是相同的(即具有相同的聯系人組,通知間隔等)。
定義hostescalation {
host_name HOST1,HOST2,HOST3,…,HOSTN
其他升級指令 …
}
多個主機組中的所有主機
如果要為一個或多個主機組中的所有主機創建主機升級,則可以使用hostgroup_name指令。以下定義將在屬于主機組HOSTGROUP1到HOSTGROUPN的所有主機上創建主機升級。主機升級的所有實例都是相同的(即具有相同的聯系人組,通知間隔等)。
定義hostescalation {
hostgroup_name HOSTGROUP1,HOSTGROUP2,…,HOSTGROUPN
其他升級指令 …
}
所有主持人
如果要為配置文件中定義的所有主機創建相同的主機升級,則可以在host_name指令中使用通配符。下面的定義將為配置文件中定義的所有主機創建主機升級。主機升級的所有實例都是相同的(即具有相同的聯系人組,通知間隔等)。
定義hostescalation {
host_name *
其他升級指令 …
}
排除主機
如果要在多個主機或主機組上創建相同的主機升級,但想從定義中排除某些主機,則可以通過在主機或主機組前面加!來實現。符號。
定義hostescalation {
host_name HOST1,HOST2,!HOST3,!HOST4,…,HOSTN
hostgroup_name HOSTGROUP1,HOSTGROUP2,!HOSTGROUP3,!HOSTGROUP4,…,HOSTGROUPN
其他升級指令 …
}
主機依賴項定義
多主機
如果要為多個主機創建主機依賴性,則可以在host_name和/或dependent_host_name指令中指定多個主機。以下定義等同于創建六個單獨的主機依賴項。在上面的示例中,主機HOST3,HOST4和HOST5將同時依賴于HOST1和HOST2。除主機名(即具有相同的通知失敗條件等)外,主機相關性的所有實例都相同。
定義hostdependency {
HOST_NAME HOST1,HOST2
dependent_host_name HOST3,主機4,主機5
等依賴指令 ……
}
多個主機組中的所有主機
如果要為一個或多個主機組中的所有主機創建主機升級,則可以使用hostgroup_name和/或dependent_hostgroup_name指令。在下面的示例中,主機組HOSTGROUP3和HOSTGROUP4中的所有主機都將依賴于主機組HOSTGROUP1和HOSTGROUP2中的所有主機。除主機名(即具有相同的通知失敗條件等)外,所有主機依賴項實例都是相同的。
定義hostdependency {
hostgroup_name HOSTGROUP1,HOSTGROUP2
dependent_hostgroup_name HOSTGROUP3,HOSTGROUP4
其他依賴指令 ……
}
主機組
所有主持人
如果你想創建一個在您的配置文件中被定義為成員的所有主機主機組,您可以使用在通配符成員指令。下面的定義將創建一個名為主機組HOSTGROUP1擁有所有主機在配置文件中被定義為成員。
定義主機組 {
hostgroup_name HOSTGROUP1
成員 *
其它主機組指令 ……
}
Nagios Core中文使用教程
推薦文章: