Мониторинг здоровья

Управление проверками здоровья для членов групп адресов. Использует существующую систему Health Monitor.

Статус здоровья

curl -s https://api.1bytedns.ru/client/v1/zones/42/address_groups/5/health \
  -H "Authorization: Bearer TOKEN" | python3 -m json.tool
{
  "success": true,
  "result": {
    "enabled": true,
    "probe_type": "HTTP",
    "probe_port": 80,
    "probe_path": "/health",
    "expected_status": 200,
    "check_interval_sec": 30,
    "unhealthy_threshold": 3,
    "healthy_threshold": 2,
    "targets": [
      {
        "address": "192.0.2.1",
        "healthy": true,
        "consecutive_ok": 5,
        "consecutive_fail": 0,
        "last_checked_on": "2024-06-01T10:30:00Z"
      },
      {
        "address": "192.0.2.2",
        "healthy": false,
        "consecutive_ok": 0,
        "consecutive_fail": 3,
        "last_checked_on": "2024-06-01T10:29:50Z"
      }
    ]
  },
  "errors": [],
  "messages": []
}

Когда конфигурация отсутствует, возвращаются значения по умолчанию: enabled: false, check_interval_sec: 30, unhealthy_threshold: 3, healthy_threshold: 2, пустой targets.

Настройка мониторинга здоровья

curl -s -X PATCH https://api.1bytedns.ru/client/v1/zones/42/address_groups/5/health \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "probe_type": "HTTP",
    "probe_port": 80,
    "probe_path": "/health",
    "expected_status": 200,
    "check_interval_sec": 30,
    "unhealthy_threshold": 3,
    "healthy_threshold": 2
  }' | python3 -m json.tool

Параметры тела:

ПолеТипОбяз.Описание
enabledbooleanДаВключить/отключить мониторинг
probe_typestringУсловноTCP, HTTP, HTTPS, ICMP (требуется если enabled: true)
probe_portintУсловноПорт 1-65535 (требуется для TCP/HTTP/HTTPS; игнорируется для ICMP)
probe_pathstringУсловноURL путь (только HTTP/HTTPS; игнорируется для TCP/ICMP)
expected_statusintУсловноОжидаемый HTTP статус (только HTTP/HTTPS; игнорируется для TCP/ICMP)
check_interval_secintНетИнтервал проверки (по умолчанию: 30)
unhealthy_thresholdintНетПорадных неудач для отметки как недоступный (по умолчанию: 3)
healthy_thresholdintНетПорадных успехов для отметки как доступный (по умолчанию: 2)

История проверок

curl -s "https://api.1bytedns.ru/client/v1/zones/42/address_groups/5/health_checks?limit=20" \
  -H "Authorization: Bearer TOKEN" | python3 -m json.tool
{
  "success": true,
  "result": [
    {"address": "192.0.2.1", "healthy": true, "duration_ms": 15, "error_message": null, "checked_on": "2024-06-01T10:30:00Z"},
    {"address": "192.0.2.2", "healthy": false, "duration_ms": 5000, "error_message": "Connection timeout", "checked_on": "2024-06-01T10:29:50Z"}
  ],
  "errors": [],
  "messages": []
}

События failover

curl -s "https://api.1bytedns.ru/client/v1/zones/42/address_groups/5/failover_events?limit=20" \
  -H "Authorization: Bearer TOKEN" | python3 -m json.tool
{
  "success": true,
  "result": [
    {
      "id": 1,
      "address": "192.0.2.1",
      "reason": "consecutive_failures_threshold_reached",
      "created_on": "2024-06-01T10:25:00Z"
    }
  ],
  "errors": [],
  "messages": []
}

Health Bar

Быстрая сводка здоровья для отображения в интерфейсе.

curl -s https://api.1bytedns.ru/client/v1/zones/42/address_groups/5/healthbar \
  -H "Authorization: Bearer TOKEN" | python3 -m json.tool
{
  "success": true,
  "result": {
    "healthy_count": 2,
    "unhealthy_count": 1,
    "total_count": 3,
    "color": "yellow",
    "label": "2/3 healthy"
  },
  "errors": [],
  "messages": []
}

Логика цветов:

ЦветУсловие
gray0 членов всего
greenВсе члены здоровы
redНи один член не здоров
yellowЧастично (некоторые здоровы, некоторые нет)

Члены с healthy = null считаются недоступными (консервативный подход).

Обновлено: 2026-06-26