Icinga: Как включить режим обслуживания через удаленный API или инструмент? - PullRequest
0 голосов
/ 04 июня 2018

Я использую Icinga версии 2.4.2 для мониторинга служб на нескольких хостах.Я хотел бы иметь возможность переводить определенные хосты в режим обслуживания на определенное время, используя инструмент cli или API отдыха вместо веб-интерфейса.

Возможно ли это, и если да, какой инструмент / API я должен использовать?Если я не могу сделать это с помощью удаленного инструмента / API, какую команду я должен использовать на сервере или клиенте, чтобы перевести клиентов в режим обслуживания?

Обновление: Похоже, что остальные API имеет решение .Этот набор разрешений работает:

object ApiUser "root" {
  password = "foobar"
  permissions = [ "console", "objects/query/Host", "objects/query/Service", "actions/schedule-downtime", "actions/remove-downtime"]
}

Тогда следующее позволяет мне создавать и устранять простои:

curl -k -s -u root:foobar -H 'Accept: application/json' -X POST "https://localhost:5665/v1/actions/schedule-downtime?filter=host.name==%22${TARGET}%22&type=Host" -d '{ "start_time": "1528239116", "end_time": "1528325561", "duration": 1000, "author": "root", "comment": "downtime on $TARGET" }' | jq .

curl -k -s -u root:foobar -H 'Accept: application/json' -X POST "https://localhost:5665/v1/actions/remove-downtime?filter=host.name==%22${TARGET}%22&type=Host" | jq .

Сейчас единственная проблема, с которой я сталкиваюсь, - это как пройтипеременные для даты начала и окончания.Попытка сохранить это приводит к следующей ошибке:

{
  "status": "Invalid request body: Error: lexical error: invalid char in json text.\n                                        { \"start_time\": $current_time,\n                     (right here) ------^\n\n",
  "error": 400
}
...