Files
AWatch-rus/docs/PRODUCTION_READINESS_RU.md
T

156 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Контроль готовности промышленного внедрения
`detmir-readiness` - единая команда preflight-контроля перед внедрением,
релизом или изменением production runtime.
Команда проверяет:
- runtime env без public placeholders;
- активность обязательных systemd units;
- реальную запись в InfluxDB;
- health Grafana datasource.
## Базовый запуск
На AW server:
```bash
detmir-readiness --json
```
Ожидаемый результат:
```json
{
"ok": true,
"status": "OK"
}
```
Коды возврата:
- `0` - готово к промышленной эксплуатации;
- `2` - readiness check нашел `WARN`;
- `3` - readiness check нашел `FAIL`;
- `1` - сама команда не смогла выполниться.
## Private production inventory
Перед rollout private override-файлы проверяются отдельно:
```bash
scripts/check_production_inventory_placeholders.sh --strict \
private-config/runtime.env \
private-config/ansible-vars.yml
```
`--strict` предназначен только для private production-файлов. Публичные
tracked defaults и `.example` файлы могут содержать `HOST-EXAMPLE` и TEST-NET
адреса, потому что они не являются production source of truth.
## Что считается отказом
`detmir-readiness` возвращает `FAIL`, если:
- включенный Influx exporter получил пустой или example URL/org/bucket/token/host;
- systemd unit из обязательного списка не active;
- Influx write-probe не смог записать heartbeat;
- Grafana datasource health не `OK`.
## Акт готовности стенда
`detmir-readiness` может сохранить акт готовности в JSON, Markdown, HTML и PDF:
```bash
detmir-readiness --json \
--output-json /var/lib/activitywatch/health/detmir-readiness-latest.json \
--output-markdown /var/lib/activitywatch/health/detmir-readiness-act.md \
--output-pdf /var/lib/activitywatch/health/detmir-readiness-act.pdf
```
PDF-вывод требует один из render tools на хосте: `weasyprint`, `chromium`,
`chromium-browser` или `google-chrome`. Если PDF renderer не установлен,
используйте `--output-markdown` и `--output-html` как обязательный минимальный
артефакт внедрения.
## Readiness bundle
Для промышленного контура предпочтителен единый bundle:
```bash
detmir-readiness --output-dir /var/lib/activitywatch/health/readiness-bundle
```
Команда создает:
- `detmir-readiness-latest.json` - машинный отчет;
- `detmir-readiness-act.md` - акт готовности для оператора;
- `detmir-readiness-act.html` - HTML-версия акта;
- `sha256sums.txt` - контрольные суммы bundle-файлов.
Проверка целостности:
```bash
cd /var/lib/activitywatch/health/readiness-bundle
sha256sum -c sha256sums.txt
```
В JSON и акт добавляются технические поля `generated_by`, `host`, `version`,
`git_commit`, а также раздел `Ограничения проверки`. Секреты, токены и пароли
в артефакты не включаются.
## Ежедневное формирование
При штатном развертывании Ansible устанавливает:
- `detmir-readiness.service`;
- `detmir-readiness.timer`.
Таймер ежедневно формирует readiness bundle в
`/var/lib/activitywatch/health/readiness-bundle`.
Операторская проверка:
```bash
systemctl list-timers detmir-readiness.timer
systemctl start detmir-readiness.service
systemctl status detmir-readiness.service --no-pager
```
Если Grafana находится на отдельном узле, параметры доступа передаются через
серверный private env-файл `/etc/detmir-grafana-check.env` или
`/etc/detmir-readiness.env`. Эти файлы не входят в публичный репозиторий.
Поддерживаемые private env-переключатели:
- `DETMIR_READINESS_SKIP_SYSTEMD=true`;
- `DETMIR_READINESS_SKIP_INFLUX_WRITE=true`;
- `DETMIR_READINESS_ALLOW_DISABLED_INFLUX=true`;
- `DETMIR_READINESS_SKIP_GRAFANA=true`;
- `DETMIR_GRAFANA_DATASOURCE_UID=<uid>`;
- `DETMIR_GIT_COMMIT=<commit>`.
## Полезные параметры
```bash
detmir-readiness --json \
--aw-env-file /etc/activitywatch/aw-server.env \
--grafana-env-file /etc/detmir-grafana-check.env \
--grafana-datasource-uid influxdb_aw
```
Для диагностики без write-probe:
```bash
detmir-readiness --json --skip-influx-write
```
Для контура, где Influx временно не входит в профиль внедрения:
```bash
detmir-readiness --json --allow-disabled-influx
```
Такой запуск допустим только как временный исключительный режим; для полного
commercial DetMir contour Influx/Grafana должны быть зелеными.