Применение зависимости к сервису в icinga2 - PullRequest
0 голосов
/ 24 мая 2019

Мы используем icinga2 для мониторинга. У нас есть много сервисных проверок, которые применяются динамически через правила применения. Кроме того, это сервисы, применяемые к хэш-карте экземпляров базы данных, которые находятся на разных хостах. Короче говоря, наши сервисные имена определяются динамически, так что, например, HOST!DBNAME-svcvheck.

Таким образом, сценарий состоит в том, что большинство этих служб зависят от работоспособности базы данных, например, `HOST! DBNAME-tnsping". К сожалению, примеры документации довольно просты и не включают в себя динамическое создание ссылка на родительский сервис. То, что я думаю я хочу сделать, выглядит примерно так:

apply Dependency "db-connectivity" to Service {
  parent_service_name = "$host.name$!$service.vars.envname$-tnsping"
  # also tried variants of this, e.g.
  # parent_service_name = host.name + "!" + service.vars.envname + "-tnsping"
  child_service_name = service.name
  child_host_name = host.name
  disable_checks = true
  assign where "oracle-db-svc" in service.templates
}

Хост не имеет большого значения в моем случае, потому что зависимости - это только службы, но child_host_name является обязательным полем.

Неважно, что я делаю, я не могу распознать родительскую службу. Например:

Error: Dependency 'scan-szepdb041x.myhost.org!UAT2-beqfilelast!db-connectivity' references a parent host/service which doesn't exist.

Правила обращения к другим объектным переменным при применении Dependency, похоже, немного отличаются от применения Сервиса.

Есть ли у кого-нибудь идеи или примеры динамического применения сервисных зависимостей к сервисам, которые были созданы динамически?

1 Ответ

1 голос
/ 22 июля 2019

вам, вероятно, придется перебрать существующие хосты и посмотреть, совпадают ли они. Затем вы определяете зависимость внутри цикла.

У меня был похожий пример для динамического создания проверок диска. Если я найду его, я опубликую его здесь через несколько дней.

Не уверен, что это возможно с зависимостями, но я посмотрю.

edit: посмотрите, хватит ли чего-нибудь подобного, чтобы начать:

for (server in get_objects(Host)) {
        if (match("somename*", server.name)) {
                apply Dependency "db-connectivity" + server.name to Service use (server) {
                        parent_service_name = server.name + service.vars.envvname + "-tnsping"
                        child_service_name = service.name
                        child_host_name = host.name
                        disable_checks = true
                        assign where "oracle-db-svc" in service.templates
                }
        }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...