Tags give the ability to mark specific points in history as being important
-
chart/2.1.0
Release: chart/2.1.0974e68df · ·chart/2.1.0 ### Добавлено - `extraVolumes` и `extraVolumeMounts` — дополнительные тома в поде, например CA внешней базы: в образе distroless чужого CA нет. ### Изменено - `appVersion` — `v0.11.1`: служебные вставки Holmes вырезаются из сообщений, адрес вебхука не попадает в лог, неполная настройка SMTP и webhook останавливает старт. Подробности — в changelog сервиса. ### Удалено - `config.listenAddr`: ключ ни в одном шаблоне не использовался, порт задаётся через `service.port`. Из своих values его можно убрать, на рендер он не влиял. ### Исправлено - `config.telegram.chatId`, заданный в values числом без кавычек (`chatId: -1001234567890`), больше не превращается в `-1.00123456789e+12`: сервис отправлял такую строку в Telegram как имя чата. Кавычки по-прежнему работают. - Смена `secrets.*` перезапускает под: на нём появилась аннотация `checksum/secret`. Раньше новое значение попадало в Secret, а под продолжал работать со старым до ручного рестарта. С `existingSecret` аннотации нет — за перезапуском следит тот, кто ведёт Secret. - Secret рендерится в `data` с base64 вместо `stringData`. Ключ, исчезнувший из values, теперь удаляется при обновлении через `kubectl apply` и ArgoCD: сервер очищает `stringData`, поэтому удаление по нему не вычислялось и старое значение (например, `VL_PASSWORD` после перехода на 2.0.0) оставалось в кластере.
-
v0.11.1
Release: v0.11.1974e68df · ·v0.11.1 ### Добавлено - Запись лога `retry skipped` с полем `reason` (`budget`, `attempts`, `stale`) и теми же полями алерта, что у `investigation failed`: немедленный повтор после исключения Holmes не состоялся. Раньше такой разбор терялся без следа в логе; само правило повтора не менялось. ### Изменено - Настройка, которая раньше молча принималась, теперь останавливает старт: - `SMTP_USER`, `SMTP_PASSWORD`, `SMTP_FROM` или `SMTP_TO` без `SMTP_ADDR` и `WEBHOOK_AUTH_HEADER` без `WEBHOOK_URL` — канал выглядел настроенным, а доставки не было; - ноль и отрицательные значения `MAX_PER_HOUR`, `MAX_PER_DAY`, `QUEUE_SIZE`, `DEDUP_WINDOW`, `INVESTIGATION_TIMEOUT`. Ноль выключал расследования целиком, отрицательный `QUEUE_SIZE` ронял процесс паникой. При обновлении проверьте, что этих переменных нет в окружении без пары. - Из разбора перед отправкой в Slack, Telegram и на почту вырезаются служебные вставки Holmes: блоки `<< {"type": "promql", ...} >>` и картинки со схемой `tool-image://`. В лог и в `WEBHOOK_URL` разбор уходит как есть. - В строке лога `starting` поле `db_path` печатается только для SQLite: у внешней базы вместо него `db_host` и `db_name`. Раньше путь к файлу SQLite выводился и при `DB_TYPE=postgres` / `mysql`. ### Исправлено - Адрес из `SLACK_WEBHOOK_URL` и `WEBHOOK_URL` больше не попадает в лог `notify failed` ни при сетевой ошибке, ни при неразбираемом адресе (например, с переводом строки в конце): в тексте остаётся только причина. - Сообщения драйвера MySQL (обрыв соединения и подобные) идут в общий JSON-лог записью `mysql driver` уровня `WARN`, а не обычным текстом в stderr. -
chart/2.0.0
Release: chart/2.0.03f41ab0c · ·chart/2.0.0 ### Добавлено - `config.db.type` (`sqlite` по умолчанию, `postgres`, `mysql`), `config.db.host`, `.port`, `.name`, `.user`, `.sslMode` → переменные `DB_*` сервиса; `secrets.dbPassword` и ключ `DB_PASSWORD` в Secret (в том числе в `existingSecret`, необязательный). - `persistence.enabled` (по умолчанию `true`), `.size` (`100Mi`), `.storageClass`, `.accessModes`, `.existingClaim`: PVC `<fullname>-data` под файл SQLite в `/data`. `enabled: false` — `emptyDir`. Для внешней базы том не создаётся и не монтируется. - `podSecurityContext.fsGroup: 65532` — без него SQLite не может создать файл на томе, смонтированном с владельцем root. - `config.goMemLimit` (по умолчанию `100MiB`) → `GOMEMLIMIT`: сервис читает ответ Holmes потоком, и итоговое событие с перепиской бывает на мегабайты. Значение — около 80 % от `resources.limits.memory`; поднимая лимит памяти, поднимите и его. ### Изменено - `appVersion` — `v0.11.0`: состояние в базе, повтор неудачных разборов, запрос к Holmes стримом. Изменения сервиса — в [CHANGELOG.md](../../CHANGELOG.md#v0110--2026-09-15). ### Удалено - `config.victoriaLogs.url`, `config.victoriaLogs.user`, `secrets.vlPassword` и ключ `VL_PASSWORD` в Secret: сервис больше не восстанавливает дедуп из своих логов. `config.victoriaLogs.uiUrl` и `.streamFilter` остались. ### Ломающие изменения - По умолчанию чарт создаёт PVC. Кластер без default StorageClass оставит под в `Pending`: задайте `persistence.storageClass`, выключите `persistence.enabled` или переключите `config.db.type` на внешнюю базу. - `config.victoriaLogs.url` / `.user` и `secrets.vlPassword` из старых values молча игнорируются — удалите их. Ключ `VL_PASSWORD` в `existingSecret` больше не читается. - PVC удаляется вместе с релизом (`helm uninstall`): состояние не ценное, его потеря — повторные разборы висящих алертов в пределах лимитов.
-
v0.11.0
Release: v0.11.03f41ab0c · ·v0.11.0 ### Добавлено - Состояние дедупа и троттлинга хранится в базе и переживает рестарт: `DB_TYPE` (`sqlite` по умолчанию, `postgres`, `mysql` — он же для MariaDB), `DB_PATH` (по умолчанию `data/server.db` от рабочего каталога, каталог создаётся сам), `DB_HOST`, `DB_PORT`, `DB_NAME`, `DB_USER`, `DB_PASSWORD`, `DB_SSL_MODE`. Таблицу `bridge_state` сервис создаёт при старте — пользователю базы нужно право `CREATE TABLE`, либо таблицу нужно создать заранее по DDL из README. Недоступная база — warning, сервис работает в памяти. Неполная настройка (`postgres` без `DB_HOST`, `DB_NAME` или `DB_USER`, `DB_HOST` при `sqlite`, порт или пробел внутри `DB_HOST`, непринятый драйвером `DB_SSL_MODE`) — отказ стартовать. - Новые поля в строке `starting`: `db_type`, `db_path`, `db_host`, `db_name`; новые сообщения `state loaded`, `state load failed`, `state save failed`. ### Изменено - Встроенный `system.tmpl` (`en`, `ru`) запрещает агенту заполнять необязательные параметры инструментов (`null`, `""`, `"now"` вместо пропуска): такой вызов падает в Holmes, и разбор теряется. Для диапазона времени агент передаёт только `start`. Установки со своим `system.tmpl` в `TEMPLATE_DIR` правило не получат — добавьте его в свой шаблон. - Окно троттлинга (`MAX_PER_HOUR` / `MAX_PER_DAY`) теперь тоже переживает рестарт: под в crash loop больше не получает свежий бюджет на каждом старте. - Неудачный разбор (ошибка, таймаут, SIGTERM) больше не блокирует эпизод на `DEDUP_WINDOW`. Повтор проходит со следующей доставкой алерта, не раньше `INVESTIGATION_TIMEOUT` после неудачи, занимает слот троттлинга и ограничен двумя запусками Holmes на эпизод. Разбор, прерванный рестартом, тоже повторяется; не дошедший до Holmes — сразу и без траты попытки. - На HTTP 500 от Holmes разбор повторяется один раз сразу, без ожидания следующей доставки алерта, если позволяют `MAX_PER_HOUR` / `MAX_PER_DAY`. Так Holmes отвечает на исключение посреди разбора (например, битые аргументы инструмента), и к моменту ответа он уже не считает. Повтор пишет свои `investigation started` и итог, занимает слот троттлинга и расходует вторую попытку эпизода. 502/503/504, отказ соединения, таймаут и ошибки провайдера LLM (исключения `litellm.*`: ключ, недоступность, отказ принять запрос), как и переполненное окно контекста, ждут отложенного повтора. - Запрос к Holmes идёт стримом (`stream: true`). Таймаут bridge теперь останавливает разбор и на стороне Holmes — на границе текущего шага, — а не только перестаёт его ждать: раньше Holmes дорешивал брошенный разбор параллельно со следующим из очереди. Событие `error` внутри потока повторяется сразу по тем же правилам, что HTTP 500; rate limit провайдера (`error_code` 5204) — нет. - В записях `investigation timed out`, `investigation failed` и `investigation interrupted` появились поля стоимости, как у `investigation done` (`cost`, `cost_currency`, `total_tokens`, `prompt_tokens`, `completion_tokens`), — сколько стоил разбор до обрыва. Полей нет, если до обрыва не завершился ни один вызов LLM. - Потолок ответа Holmes в 4 МиБ снят: ненужные события потока (выводы инструментов) пропускаются без накопления, итоговое событие ограничено 16 МиБ. - SIGTERM во время разбора пишет `investigation interrupted` (warning) вместо `investigation failed` и не увеличивает `holmes_bridge_investigations_total{status="error"}`. Процесс дожидается воркера перед выходом. ### Удалено - Запрос к Holmes без стрима и флага для него нет: откат — это откат версии. - `VL_URL`, `VL_USER`, `VL_PASSWORD` и восстановление дедуп-отметок из собственных логов в VictoriaLogs. `VL_UI_URL` и `VL_STREAM_FILTER` остались — они нужны ссылке на разбор в vmui. ### Ломающие изменения - Дедуп переживает рестарт только через базу. При первом старте после обновления состояние пустое: висящие алерты разберутся повторно в пределах `MAX_PER_HOUR`. В контейнере без записываемого тома SQLite не откроется — warning, и сервис работает в памяти, как без базы; путь задаётся `DB_PATH`. - Из формата логов контрактом осталось только `investigation done` с полем `episode` (для ссылки в vmui): `investigation started` сервис больше не читает. -
chart/1.0.1
Release: chart/1.0.18036fe9d · ·chart/1.0.1 ### Добавлено - CHANGELOG.md внутри самого чарта: изменения по версиям видно в распакованном пакете, а не только в репозитории.
-
chart/1.0.0
63ad6439 · ·