Справочник API платформы

Справочник по API-интерфейсам Proto Observability Platform: описание, протоколы, функциональность.

На этой странице:

Proto Observability Platform предоставляет набор API для загрузки и выгрузки данных телеметрии, а также для управления конфигурацией платформы. Все API доступны через единую точку входа платформы.


API для работы с данными телеметрии

Получение (выгрузка) данных

Метрики

Prometheus-совместимый HTTP API для запросов метрик на языке PromQL.

Базовый путь: /promqlapi/

ЭндпоинтМетодОписание
/promqlapi/api/v1/queryGET/POSTМгновенный запрос (instant query)
/promqlapi/api/v1/query_rangeGET/POSTЗапрос за диапазон времени (range query)
/promqlapi/api/v1/seriesGETМетаданные серий
/promqlapi/api/v1/labelsGETСписок имён меток
/promqlapi/api/v1/label/{name}/valuesGETЗначения конкретной метки
/promqlapi/federateGETФедерация метрик

Протокол: PromQL over HTTP (Prometheus-совместимый API).

Логи

API для запросов логов на языке LogsQL.

Базовый путь: /logsqlapi/

ЭндпоинтМетодОписание
/logsqlapi/select/logsql/queryGETЗапросы логов с синтаксисом LogsQL
/logsqlapi/select/logsql/hitsGETГистограмма совпадений по времени
/logsqlapi/select/logsql/field_namesGETДоступные имена полей
/logsqlapi/select/logsql/field_valuesGETЗначения указанного поля

Протокол: LogsQL over HTTP.

Трейсы

ПрефиксОписание
/tracesСписок трейсов, сервисы, операции, инстансы, теги

Метрики сервисов, алерты и аналитика

Аналитические запросы по трейсам, ошибкам, алертам, бизнес-транзакциям и другим доменам выполняются через OLAP API семантического слоя данных.

Базовый путь: /cubejs-api/

ЭндпоинтМетодОписание
/cubejs-api/v1/loadGET/POSTВыполнение OLAP-запросов (меры, измерения, фильтры, время)
/cubejs-api/v1/metaGETМетаданные схемы (доступные модели, меры, измерения)
/cubejs-api/v1/sqlGET/POSTПредпросмотр SQL-запроса

Модели данных: 60+ моделей, покрывающих домены – сервисы, спаны, вызовы, ошибки, RUM, браузер, сессии, бизнес-транзакции, бизнес-процессы, алерты, действия, события, ресурсы, здоровье, воронки, метрики мониторинга БД и другие.

Протокол: OLAP REST API с JSON-языком запросов.


Загрузка внешних данных в платформу

Метрики

ЭндпоинтМетодОписание
/promqlapi/api/v1/writePOSTRemote write (протокол Prometheus remote write)

Протокол: Prometheus remote write.

Логи

ЭндпоинтМетодОписание
/insert/opentelemetry/v1/logsPOSTПриём логов по протоколу OTLP/HTTP (рекомендуется)
/insert/elasticsearch/_bulkPOSTПриём логов в формате Elasticsearch Bulk API
/insert/jsonlinePOSTПриём логов в формате JSON stream (ndjson)
/insert/loki/api/v1/pushPOSTПриём логов в формате Loki JSON API
/insert/datadog/api/v2/logsPOSTПриём логов в формате DataDog API

Параметры обработки полей можно передавать через строку запроса или HTTP-заголовки:

ПараметрHTTP-заголовокОписание
_msg_fieldVL-Msg-FieldПоле с текстом сообщения (по умолчанию _msg)
_time_fieldVL-Time-FieldПоле с временной меткой (по умолчанию _time)
_stream_fieldsVL-Stream-FieldsПоля, определяющие лог-поток (через запятую)
ignore_fieldsVL-Ignore-FieldsПоля для исключения (через запятую, поддерживает prefix*)
extra_fieldsVL-Extra-FieldsДополнительные поля в формате name=value (через запятую)

Подробнее о настройке агентов и коллекторов: Получение данных логов.

Трейсы

Загрузка трейсов выполняется через инструментацию приложений с помощью трейсеров или OpenTelemetry Collector. Подробнее: Инструментация.

Алерты

Платформа принимает алерты от внешних систем мониторинга в двух форматах:

ЭндпоинтМетодФорматОписание
/api/v2/alertprocessPOSTAlertmanager webhookПриём алертов в формате Alertmanager webhook (обёртка с полями receiver, groupKey, alerts[], groupLabels)
/api/v2/alertsPOSTМассив алертовПриём алертов в виде плоского массива объектов, например, от VictoriaMetrics vmalert (поля: startsAt, endsAt, generatorURL, labels, annotations)

API для управления платформой

Платформа предоставляет REST API для управления конфигурацией. Протокол: REST/JSON.

Правила алертинга

REST API с документацией OpenAPI/Swagger.

ЭндпоинтМетодОписание
/rulesapi/rulesGET/POST/PUT/DELETECRUD правил алертинга + клонирование
/rulesapi/groupsGETСписок групп правил
/rulesapi/deployPOSTЭкспорт и применение конфигурации (YAML)
/rulesapi/rulepolicy/receiversGET/POST/PUT/DELETECRUD получателей уведомлений
/rulesapi/rulepolicy/routesGET/POST/PUT/DELETECRUD маршрутов + управление приоритетами
/rulesapi/rulepolicy/deployPOSTПрименение политики алертинга
/rulesapi/swagger/*GETOpenAPI/Swagger документация

Бизнес-транзакции

Группа APIПрефиксОписание
Ключевые бизнес-транзакции/transactionsCRUD + массовое удаление
Правила обнаружения BT/bt-detection-rulesCRUD + тестирование паттернов + применение ко всем
RUM бизнес-транзакции/rum-key-business-transactionsCRUD
RUM правила обнаружения/rum-bt-detection-rulesCRUD + тестирование паттернов

Бизнес-процессы

ПрефиксОписание
/business-processesCRUD + вложенные шаги + порядок

Сегменты и пороги

ПрефиксОписание
/protoobp-api/segmentsCRUD сегментов + массовое удаление
/protoobp-api/apdex-thresholdsCRUD порогов Apdex по сервису
/protoobp-api/data-extraction-rulesCRUD правил извлечения данных

Ресурсная модель

ПрефиксОписание
/protoobp-api/resource-typesCRUD типов ресурсов
/protoobp-api/resourcesCRUD ресурсов + сводки + соседи + граф зависимостей
/protoobp-api/resource-relationshipsCRUD связей ресурсов
/protoobp-api/relationship-typesCRUD типов связей
/protoobp-api/ci-classesCRUD CI-классов
/protoobp-api/ci-subclassesCRUD CI-подклассов

RBAC-администрирование

ПрефиксОписание
/protoobp-api/rbac/*Роли, разрешения, привязки, аудит

Сводная таблица стандартов API

СтандартГде используется
PromQL over HTTPЗапросы и запись метрик
LogsQL over HTTPЗапросы логов
OLAP REST APIАналитические запросы (трейсы, алерты, бизнес-транзакции и др.)
REST/JSONУправление конфигурацией платформы
REST/HTTP (мультиформатный)Приём логов (OTLP, Elasticsearch, JSON, Loki, DataDog)
OpenAPI/SwaggerДокументация API правил алертинга
Alertmanager webhookПриём алертов от внешних систем

Аутентификация запросов к OLAP API

Начиная с версии v200 платформа включает RBAC по умолчанию. Все запросы к /cubejs-api/* обязаны нести валидный Bearer токен, выданный сервисом proto-auth. Запросы без токена возвращают 401 TOKEN_MISSING.

Внешний клиент предъявляет access token proto-auth (RS256) в заголовке Authorization: Bearer <jwt>.

Подключение внешнего клиента

Для каждой внешней интеграции (скрипта, BI-инструмента, дашборда) заводится отдельный пользователь платформы с правами на нужные сервисы.

Шаг 1. Подготовка пользователя. В платформе создаётся отдельный пользователь под интеграцию. В веб-интерфейсе платформы (НастройкиРоли и доступ) этому аккаунту назначаются роли с правом просмотр на сервисы, к которым нужен доступ. Аккаунту с правом {admin, *, *} доступны все сервисы.

Шаг 2. Получение access token у proto-auth:

ACCESS_TOKEN=$(curl -s -X POST \
  "https://<платформа>/realms/protoobp/protocol/openid-connect/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=password" \
  -d "client_id=ui" \
  -d "username=$INTEGRATION_USER" \
  -d "password=$INTEGRATION_PASSWORD" \
  | jq -r '.access_token')

Параметры запроса:

  • Realm — protoobp (фиксированное имя realm в proto-auth).
  • client_id=ui — клиент realm-а protoobp с включённым Direct Access Grants. Дополнительный клиент под интеграцию заводить не требуется.
  • Endpoint — стандартный OpenID Connect token endpoint в proto-auth.

Шаг 3. Вызов CubeJS API через платформу:

curl -s -X POST "https://<платформа>/cubejs-api/v1/load" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "query": {
      "measures": ["Calls.count"],
      "dimensions": ["Calls.service"],
      "timeDimensions": [{"dimension": "Calls.date", "dateRange": "today"}]
    }
  }'

Сервисы, на которые у пользователя нет прав, в результате не появляются.

Типовые ошибки и замечания

  • Время жизни access token. Токены proto-auth короткоживущие (по умолчанию около 5 минут). Долгоживущие интеграции должны обновлять токен через refresh_token либо повторно вызывать /token перед каждым запросом.
  • Отдельный аккаунт на интеграцию. Каждой интеграции рекомендуется заводить собственного пользователя платформы с минимально необходимым набором ролей — это упрощает аудит и отзыв прав.
  • Миграция с pre-v200. Скрипты, работавшие с CubeJS API на версии v199 без аутентификации, на v200 будут получать 401 TOKEN_MISSING. Решение — завести отдельного пользователя платформы, назначить роли и перейти на схему авторизации с Bearer-токеном, описанную выше.