Моніторинг статусу сервісів Pharmapoint через Better Stack API
1 Загальні відомості та авторизація
URI: https://status.pharmapoint.ua/index.json
Метод використовується для отримання інформації про поточний стан сервісів, історію доступності та інциденти.
Запит виконується методом GET https://status.pharmapoint.ua/index.json
- Публічна статус-сторінка: https://status.pharmapoint.ua/
- Endpoint є повністю публічним. Авторизація, передача API-токенів чи спеціальних заголовків не потрібна.
- Опитування endpoint відбувається з інтервалом 30–60 секунд або відповідно до внутрішніх архітектурних вимог вашої системи моніторингу
Партнерська система (АІС) виконує запит до Better Stack та отримує структуровану інформацію у форматі JSON. Отримані дані обробляються (парсяться) на стороні партнера для подальшої інтеграції у власну систему моніторингу.
2 Структура JSON-відповіді
Структура JSON-відповіді побудована у вигляді кількох ключових блоків:
| Блок | Опис |
|---|---|
data | Головний об'єкт, що містить загальну інформацію про статус-сторінку (status page) та загальний статус системи. |
included | Масив пов’язаних об’єктів: детальний стан окремих сервісів (ресурсів), секцій, активних інцидентів та планових робіт. |
relationships | Об'єкт, що описує зв’язки між сутностями JSON. |
3 Загальний статус системи
Для швидкої перевірки працездатності всієї системи Pharmapoint використовується поле:
data.attributes.aggregate_state
Можливі значення aggregate_state:
| Значення | Опис статусу |
|---|---|
operational | Всі сервіси працюють у штатному режимі |
degraded | Фіксується часткова деградація (уповільнення або збої) окремих сервісів |
downtime | Сервіси частково або повністю недоступні |
maintenance | Проводяться планові або екстрені технічні роботи |
Для базового моніторингу вашій системі достатньо аналізувати лише це поле aggregate_state. Якщо воно дорівнює operational — система працює коректно
4 Статуси та метрики окремих сервісів
Детальна інформація про кожен сервіс знаходиться в масиві included. Об'єкти сервісів мають тип status_page_resource.
Приклад фільтрації сервісів
const services = json.included.filter(item => item.type === "status_page_resource");
4.1 Ключові поля об'єкта сервісу (attributes):
| Поле | Тип | Опис |
|---|---|---|
attributes.public_name | string | Публічна назва сервісу |
attributes.status | string | Поточний стан конкретного сервісу (див. Можливі статуси окремих сервісів) |
attributes.availability | decimal | Коефіцієнт доступності сервісу (Uptime). Поле availability повертається у decimal-форматі та відображає доступність сервісу за період (наприклад, 0.999828 = 99.9828%) |
attributes.status_page_section_id | string | Ідентифікатор секції, до якої належить сервіс |