{
  "title": "Статус сервисов",
  "updated": "2026-07-26T11:19:19+04:00",
  "overall": "ok",
  "checks": [
    {
      "id": "verbly-web",
      "name": "Verbly",
      "group": "Сайты",
      "desc": "verbly.ru — самоучитель английского",
      "type": "http",
      "target": "https://verbly.ru",
      "expect": [
        200
      ],
      "warnMs": 1500,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 10,
      "result": {
        "status": "ok",
        "ms": 9,
        "msg": "HTTP 200 за 9 мс",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 100,
      "since": "2026-07-26T09:23:17+04:00"
    },
    {
      "id": "pocket-web",
      "name": "Pocket Claude",
      "group": "Сайты",
      "desc": "pcandranikuz.ru — кокпит (401 = жив, просит вход)",
      "type": "http",
      "target": "https://pcandranikuz.ru",
      "expect": [
        200,
        401
      ],
      "warnMs": 1500,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 10,
      "result": {
        "status": "ok",
        "ms": 15,
        "msg": "HTTP 401 за 15 мс",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 100,
      "since": "2026-07-26T09:23:17+04:00"
    },
    {
      "id": "code-web",
      "name": "code-server",
      "group": "Сайты",
      "desc": "code.pcandranikuz.ru — VS Code в браузере (302 = жив, просит вход)",
      "type": "http",
      "target": "https://code.pcandranikuz.ru",
      "expect": [
        200,
        302
      ],
      "warnMs": 2000,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 10,
      "result": {
        "status": "ok",
        "ms": 10,
        "msg": "HTTP 302 за 10 мс",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 100,
      "since": "2026-07-26T10:38:19+04:00"
    },
    {
      "id": "cert-code",
      "name": "Сертификат code.pcandranikuz.ru",
      "group": "Сертификаты",
      "desc": "Дней до истечения",
      "type": "tls",
      "target": "code.pcandranikuz.ru:443",
      "expect": null,
      "warnMs": 0,
      "warnAt": 21,
      "critAt": 7,
      "timeoutSec": 10,
      "result": {
        "status": "ok",
        "ms": 8,
        "msg": "действителен до 24.10.2026",
        "value": 89.9294278469614,
        "unit": " дн",
        "hasVal": true
      },
      "uptime90": 100,
      "since": "2026-07-26T10:38:19+04:00"
    },
    {
      "id": "svc-verbly",
      "name": "verbly.service",
      "group": "Сервисы",
      "desc": "Go-бэкенд Verbly",
      "type": "systemd",
      "target": "verbly.service",
      "expect": null,
      "warnMs": 0,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 0,
      "result": {
        "status": "ok",
        "ms": 8,
        "msg": "активен",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 100,
      "since": "2026-07-26T09:23:17+04:00"
    },
    {
      "id": "svc-yamagrad",
      "name": "yamagrad.service",
      "group": "Сервисы",
      "desc": "Telegram-бот @hueplet_yama_bot",
      "type": "systemd",
      "target": "yamagrad.service",
      "expect": null,
      "warnMs": 0,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 0,
      "result": {
        "status": "ok",
        "ms": 9,
        "msg": "активен",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 100,
      "since": "2026-07-26T09:23:17+04:00"
    },
    {
      "id": "svc-pocket",
      "name": "pocket-claude.service",
      "group": "Сервисы",
      "desc": "Pocket Claude и Алиса",
      "type": "systemd",
      "target": "pocket-claude.service",
      "expect": null,
      "warnMs": 0,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 0,
      "result": {
        "status": "ok",
        "ms": 8,
        "msg": "активен",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 100,
      "since": "2026-07-26T09:23:17+04:00"
    },
    {
      "id": "svc-nginx",
      "name": "nginx.service",
      "group": "Сервисы",
      "desc": "Веб-сервер и TLS",
      "type": "systemd",
      "target": "nginx.service",
      "expect": null,
      "warnMs": 0,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 0,
      "result": {
        "status": "ok",
        "ms": 9,
        "msg": "активен",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 100,
      "since": "2026-07-26T09:23:17+04:00"
    },
    {
      "id": "svc-vpn",
      "name": "openvpn-client@mts",
      "group": "Сервисы",
      "desc": "Туннель до рабочего календаря",
      "type": "systemd",
      "target": "openvpn-client@mts.service",
      "expect": null,
      "warnMs": 0,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 0,
      "result": {
        "status": "ok",
        "ms": 9,
        "msg": "активен",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 100,
      "since": "2026-07-26T09:23:17+04:00"
    },
    {
      "id": "pg",
      "name": "PostgreSQL 16",
      "group": "Базы",
      "desc": "127.0.0.1:5432",
      "type": "tcp",
      "target": "127.0.0.1:5432",
      "expect": null,
      "warnMs": 0,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 5,
      "result": {
        "status": "ok",
        "ms": 0,
        "msg": "порт отвечает за 0 мс",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 100,
      "since": "2026-07-26T09:23:17+04:00"
    },
    {
      "id": "disk",
      "name": "Диск /",
      "group": "Ресурсы",
      "desc": "Занято места",
      "type": "disk",
      "target": "/",
      "expect": null,
      "warnMs": 0,
      "warnAt": 80,
      "critAt": 92,
      "timeoutSec": 0,
      "result": {
        "status": "ok",
        "ms": 0,
        "msg": "занято 16%, свободно 56 ГБ",
        "value": 15.694081191900306,
        "unit": "%",
        "hasVal": true
      },
      "uptime90": 100,
      "since": "2026-07-26T09:23:17+04:00"
    },
    {
      "id": "mem",
      "name": "Память",
      "group": "Ресурсы",
      "desc": "Занято RAM",
      "type": "mem",
      "target": "",
      "expect": null,
      "warnMs": 0,
      "warnAt": 85,
      "critAt": 95,
      "timeoutSec": 0,
      "result": {
        "status": "ok",
        "ms": 0,
        "msg": "занято 47%, свободно 1034 МБ",
        "value": 47.456153583536455,
        "unit": "%",
        "hasVal": true
      },
      "uptime90": 100,
      "since": "2026-07-26T09:23:17+04:00"
    },
    {
      "id": "load",
      "name": "Нагрузка CPU",
      "group": "Ресурсы",
      "desc": "load average за 1 мин на ядро",
      "type": "load",
      "target": "",
      "expect": null,
      "warnMs": 0,
      "warnAt": 150,
      "critAt": 300,
      "timeoutSec": 0,
      "result": {
        "status": "ok",
        "ms": 0,
        "msg": "load 0.12 на 1 ядро(а)",
        "value": 12,
        "unit": "%",
        "hasVal": true
      },
      "uptime90": 99.15254237288136,
      "since": "2026-07-26T10:44:19+04:00"
    },
    {
      "id": "cert-pc",
      "name": "Сертификат pcandranikuz.ru",
      "group": "Сертификаты",
      "desc": "Дней до истечения",
      "type": "tls",
      "target": "pcandranikuz.ru:443",
      "expect": null,
      "warnMs": 0,
      "warnAt": 21,
      "critAt": 7,
      "timeoutSec": 10,
      "result": {
        "status": "ok",
        "ms": 17,
        "msg": "действителен до 04.10.2026",
        "value": 70.49102432355997,
        "unit": " дн",
        "hasVal": true
      },
      "uptime90": 100,
      "since": "2026-07-26T09:23:17+04:00"
    },
    {
      "id": "cert-verbly",
      "name": "Сертификат verbly.ru",
      "group": "Сертификаты",
      "desc": "Дней до истечения",
      "type": "tls",
      "target": "verbly.ru:443",
      "expect": null,
      "warnMs": 0,
      "warnAt": 21,
      "critAt": 7,
      "timeoutSec": 10,
      "result": {
        "status": "ok",
        "ms": 14,
        "msg": "действителен до 06.10.2026",
        "value": 71.93317693597247,
        "unit": " дн",
        "hasVal": true
      },
      "uptime90": 100,
      "since": "2026-07-26T09:23:17+04:00"
    }
  ]
}
