{
  "title": "Статус сервисов",
  "updated": "2026-09-24T18:47:18+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": 2,
        "msg": "HTTP 200 за 2 мс",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 99.9965506139907,
      "since": "2026-09-11T10:48:57+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": 4,
        "msg": "HTTP 401 за 4 мс",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 99.9965506139907,
      "since": "2026-09-11T10:48:57+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": 5,
        "msg": "HTTP 302 за 5 мс",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 99.9965475971276,
      "since": "2026-09-11T10:48:57+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": 10,
        "msg": "действителен до 23.12.2026",
        "value": 89.89437873349162,
        "unit": " дн",
        "hasVal": true
      },
      "uptime90": 99.9965475971276,
      "since": "2026-09-11T10:48:57+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": 5,
        "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": 5,
        "msg": "активен",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 99.97700409327139,
      "since": "2026-09-21T12:27:18+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": 5,
        "msg": "активен",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 99.99770040932714,
      "since": "2026-09-11T10:48:57+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": 4,
        "msg": "активен",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 100,
      "since": "2026-09-11T10:48:57+04:00"
    },
    {
      "id": "app-sup",
      "name": "САП-радар",
      "group": "Мини-сервисы",
      "desc": "sup.pcandranikuz.ru — условия для сапбординга",
      "type": "http",
      "target": "http://127.0.0.1:8091/healthz",
      "expect": [
        200
      ],
      "warnMs": 1000,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 8,
      "result": {
        "status": "ok",
        "ms": 1,
        "msg": "HTTP 200 за 1 мс",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 100,
      "since": "2026-07-26T11:35:36+04:00"
    },
    {
      "id": "app-kormi",
      "name": "Покорми",
      "group": "Мини-сервисы",
      "desc": "kormi.pcandranikuz.ru — карта мест бездомных животных",
      "type": "status",
      "target": "http://127.0.0.1:8098/api/status",
      "expect": [
        200
      ],
      "warnMs": 1000,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 8,
      "result": {
        "status": "ok",
        "ms": 15,
        "msg": "сегодня 1 визит (1 человек) · за 7 дней 35 (30) · всего 267",
        "value": 1,
        "unit": " место",
        "hasVal": true
      },
      "uptime90": 99.99634168648252,
      "since": "2026-09-11T10:48:57+04:00"
    },
    {
      "id": "app-sudoku",
      "name": "Супер судоку",
      "group": "Мини-сервисы",
      "desc": "sudoku.pcandranikuz.ru — восемь пересекающихся судоку",
      "type": "status",
      "target": "http://127.0.0.1:8100/api/status",
      "expect": [
        200
      ],
      "warnMs": 1000,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 8,
      "result": {
        "status": "ok",
        "ms": 0,
        "msg": "свободных головоломок: 80, выдано: 0",
        "value": 80,
        "unit": "шт",
        "hasVal": true
      },
      "uptime90": 99.99239572639823,
      "since": "2026-09-11T10:48:57+04:00"
    },
    {
      "id": "app-svetlana-usage",
      "name": "Светлана (дневник еды)",
      "group": "Мини-сервисы",
      "desc": "@nutri_iq_bot — записи за сутки",
      "type": "status",
      "target": "http://127.0.0.1:8101/api/status",
      "expect": [
        200
      ],
      "warnMs": 1000,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 8,
      "result": {
        "status": "ok",
        "ms": 1,
        "msg": "записей за сутки: 21, за неделю: 185 (людей: 9); подписок: 15; модель за сутки: 5₽",
        "value": 21,
        "unit": "зап/сут",
        "hasVal": true
      },
      "uptime90": 99.99596546437505,
      "since": "2026-09-20T10:46:18+04:00"
    },
    {
      "id": "app-taro",
      "name": "Пифия (таро)",
      "group": "Мини-сервисы",
      "desc": "taro.pcandranikuz.ru — @PifiaTaroBot, ВК и веб",
      "type": "http",
      "target": "http://127.0.0.1:8102/health",
      "expect": [
        200
      ],
      "warnMs": 1500,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 8,
      "result": {
        "status": "ok",
        "ms": 0,
        "msg": "HTTP 200 за 0 мс",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 100,
      "since": "2026-09-07T15:06:31+04:00"
    },
    {
      "id": "app-rate",
      "name": "Курс драма",
      "group": "Мини-сервисы",
      "desc": "rate.pcandranikuz.ru — рубль, доллар, евро к драму",
      "type": "http",
      "target": "http://127.0.0.1:8092/healthz",
      "expect": [
        200
      ],
      "warnMs": 1000,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 8,
      "result": {
        "status": "ok",
        "ms": 1,
        "msg": "HTTP 200 за 1 мс",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 100,
      "since": "2026-07-26T11:35:36+04:00"
    },
    {
      "id": "app-sky",
      "name": "Небо над Арменией",
      "group": "Мини-сервисы",
      "desc": "sky.pcandranikuz.ru — самолёты в реальном времени",
      "type": "http",
      "target": "http://127.0.0.1:8093/healthz",
      "expect": [
        200
      ],
      "warnMs": 1000,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 8,
      "result": {
        "status": "ok",
        "ms": 0,
        "msg": "HTTP 200 за 0 мс",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 100,
      "since": "2026-07-26T11:35:36+04:00"
    },
    {
      "id": "app-flies",
      "name": "Мухи",
      "group": "Мини-сервисы",
      "desc": "flies.pcandranikuz.ru — живая колония мух",
      "type": "status",
      "target": "http://127.0.0.1:8103/api/status",
      "expect": [
        200
      ],
      "warnMs": 1000,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 8,
      "result": {
        "status": "ok",
        "ms": 0,
        "msg": "9 мух живо, 33 события за сутки",
        "value": 9,
        "unit": "мух",
        "hasVal": true
      },
      "uptime90": 100,
      "since": "2026-09-17T10:51:18+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": 99.99885020466357,
      "since": "2026-08-12T11:00:37+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": "занято 36%, свободно 42 ГБ",
        "value": 36.4889423240095,
        "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": "занято 43%, свободно 1125 МБ",
        "value": 42.81724638946892,
        "unit": "%",
        "hasVal": true
      },
      "uptime90": 100,
      "since": "2026-09-08T15:17:31+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.00 на 1 ядро(а)",
        "value": 0,
        "unit": "%",
        "hasVal": true
      },
      "uptime90": 99.99770040932714,
      "since": "2026-09-24T10:49:18+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": 11,
        "msg": "действителен до 04.12.2026",
        "value": 70.57133410299336,
        "unit": " дн",
        "hasVal": true
      },
      "uptime90": 99.9965506139907,
      "since": "2026-09-11T10:48:57+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": 7,
        "msg": "действителен до 05.12.2026",
        "value": 72.15766503530412,
        "unit": " дн",
        "hasVal": true
      },
      "uptime90": 99.9965506139907,
      "since": "2026-09-11T10:48:57+04:00"
    },
    {
      "id": "svetlana-svc",
      "name": "Светлана (бот)",
      "group": "Сервисы",
      "desc": "@nutri_iq_bot — бот-нутрициолог",
      "type": "systemd",
      "target": "svetlana.service",
      "expect": null,
      "warnMs": 0,
      "warnAt": 0,
      "critAt": 0,
      "timeoutSec": 0,
      "result": {
        "status": "ok",
        "ms": 5,
        "msg": "активен",
        "value": 0,
        "unit": "",
        "hasVal": false
      },
      "uptime90": 100,
      "since": "2026-09-11T10:48:57+04:00"
    }
  ]
}
