Мастер-класс «Работа с API мониторинговой системы»

25 февраля 2022 года «Центральный Пульт» совместно с сообществом специалистов в сфере мониторинга и автоматизации MONHOUSE провел online мастер-класс на тему: «Работа с API мониторинговой системы».

Мастер-класс «Работа с API мониторинговой системы»

25 февраля 2022 года «Центральный Пульт» совместно с сообществом специалистов в сфере мониторинга и автоматизации MONHOUSE провел online мастер-класс на тему: «Работа с API мониторинговой системы».
Онлайн мастер-класс для специалистов в сфере мониторинга вновь проводился Денисом Салонниковым, одним из ключевых инженеров по внедрению DevOps программного комплекса «Центральный пульт» (SAYMON). В ходе предыдущего аналогичного мероприятия Денис рассказал о веб-интерфейсе комплекса и о настройке мониторинга на примере виртуальных машин; с записью мастер-класса можно ознакомиться на нашем Youtube-канале. На этот раз были рассмотрены дополнительные возможности веб-интерфейса и прозвучали ответы на вопросы о том, как работать с API «Центрального пульта».

Что такое API?

Как известно, API, Application Programming Interface (программный интерфейс приложения) – набор методов, классов, функций, библиотек и т.д., которые обеспечивают взаимодействие между компьютерными программами. Использование API упрощает управление и автоматизацию процессов в обычно многоуровневой иерархии компонентов программ.

«Центральный пульт» обладает собственным API, относящимся к классу REpresentational State Transfer (REST), что дает возможность выполнять RESTful-операции по чтению, добавлению, изменению и удалению информации об объектах системы мониторинга.

С помощью REST API реализуются следующие действия:

  • получение списка объектов;
  • получение иерархической структуры объектов;
  • получение текущего статуса объектов и истории их состояний;
  • запись данных в объекты без использования агентов;
  • настройка свойств объектов;
  • получение свойств объектов;
  • получение параметров объектов;
  • работа с инцидентами;
  • cоздание классов с добавлением проверок.

В ходе мастер-класса были использованы примеры из документации по работе с API «Центрального Пульта», которая свободно доступна на официальном сайте wiki.saymon.info.

Какие инструменты использовать для API системы мониторинга «Центральный пульт»?

Во-первых, можно установить специальный инструмент для работы с API – Postman и с помощью него совершать запросы. Во-вторых, можно использовать Bash, Python или любой другой язык программирования, который позволяет выполнять HTTP- и HTTPS-запросы.

Как создать объект через API?

В документации по системе переходим в раздел «Объекты», в котором доступны примеры запросов и ответов от сервера на языках Bash, JavaScript, NodeJS и Python.

Для обращения к API необходимы логин (login) и пароль (password), доступные в настройках «Центрального Пульта» (см. пример 1). В параметре "parent_id" указывается идентификатор родительского объекта, в котором необходимо создать новый объект (в примере – 1).

В программном комплексе «Центральный Пульт» все объекты принадлежат к какому-либо классу, что способствует удобству кастомизации и автоматизации. В параметре "class_id" указывается идентификатор класса объекта, например, 24 соответствует классу INFO. С классами объектов можно подробнее ознакомиться в разделе «Конфигурации» документации.
Пример 1: Создание объекта
1 import requests
2
3 login = <...>
4 password = <...>
5 saymon_hostname = <...>
6 url = "https://" + saymon_hostname + "/node/api/objects"
7 body = {"name": "New Object", "parent_id": "1", "class_id": "24"}
8
9 response = requests.request("POST", url, json=body, auth=(login, password))
10 print(response.text)

Как добавить операции к объекту через API?

Добавить операцию для объекта можно с помощью небольшого скрипта в окне настройки операции веб-интерфейса. Подробнее о работе в интерфейсе «Центрального Пульта» Денис рассказывал на мастер-классе, прошедшем 27 января.

Ниже приведен исходный код одного из скриптов, с помощью которого была продемонстрирована работа с операциями на объектах.
Пример 2: Добавление операции к объекту
1 import requests
2 import json
3
4 saymon_hostname = <178.154.213.113>
5
6 object_id = "{{id}}"
7
8 url = "https://" + saymon_hostname + "/node/api/objects/" + object_id + "/stat?auth-token=2ac4992a-5a50-418c-9ffa-7b07cb9d72b2"
9
10 body = { "Data": "0" }
11 response = requests.request("POST", url, json=body)
12 print(response.text)

В параметре "object_id" используется переменная "{{id}}" – идентификатор объекта, в котором будет запущена операция. Это означает, что при выполнении скрипта операции внутри объекта в "{{id}}" автоматически будет подставлен его идентификатор.

Для безагентного мониторинга реализуется специальный метод "Set Object's Stat", позволяющий загружать данные из внешних систем.

Как скрыть свои логин и пароль при аутентификации?

Скрытие своих логина и пароля осуществляется путем запроса токена авторизации через API с помощью скрипта из примера 3.
Пример 3: Скрытие логина и пароля при аутентификации
1 import requests
2
3 login = <...>
4 password = <...>
5 user_id = <...>
6 saymon_hostname = <...>
7 url = "https://" + saymon_hostname + "/node/api/users/" + \
8 user_id + "/auth-token"
9
10 response = requests.request("POST", url, auth=(login, password))
11 print(response.text)

Запрос токена требует знания идентификатора пользователя ("user_id"), который можно получить через запрос вида "GET /node/api/users/current".

Как и для чего контролировать «протухание данных»?

«Протухание данных» ("expiry period") – это период времени, в течение которого полученные данные актуальны. Если установить для объекта тип проверки «не проверять», то данные «протухнут», а объект перейдет в состояние "disabled". Чтобы избежать этого, можно использовать тип проверки «Внешняя проверка».

Период «протухания» можно установить при помощи REST-метода на любой промежуток времени – от суток до десятков лет. Режим прекращения валидности данных используется для отслеживания ситуации, при которой данные перестают поступать с объекта мониторинга (через оповещения системы, автоматизированные средства запуска скриптов, уведомлений и т.д.).

Такой сценарий актуален для компаний в случаях, когда отдельные команды не хотят предоставлять доступ к их подсистемам и программному коду, но готовы соблюдать протокол общего мониторинга и сообщать центральной системе информацию о том, как работают их компоненты, связи, активы. Команды могут направлять только те метрики, которые считают нужными через REST-интерфейс или JSON-последовательности и устанавливать собственный "expiry period" данных для поступления предупреждения дежурным инженерам и срабатывания мониторинга изменения состояния данных тогда, когда это необходимо.

Таким образом, в ходе мастер-класса Денис рассказал и показал на примере работы с API платформы «Центральный Пульт» как создавать новые объекты, получать данные об объектах и отправлять их обратно в систему, добавлять к объектам операции, аутентифицироваться в системе с помощью токена, настраивать виджеты и др. Остались вопросы? Смотрите полную запись онлайн мастер-класса на Youtube-канале MONHOUSE.
Следите за новостями на сайте и в соцсетях MONHOUSE, чтобы узнать о следующем мастер-классе и успеть зарегистрироваться.

Скачать «Центральный Пульт» можно с нашего официального сайта. В доступе есть вариант демо-версии на 90 дней без ограничения по функционалу и демо-версия без ограничения срока работы. Свяжитесь с нами для обсуждения пилотного проекта.

Оставайтесь в курсе последних новостей нашей компании!

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности