doc: update progress and thinking log for v0.1.23-v0.1.24 (billing + metrics)

This commit is contained in:
Naeel
2026-04-12 12:10:28 +03:00
parent 35d7985b87
commit c870c09fff
2 changed files with 60 additions and 5 deletions
+15 -4
View File
@@ -2,14 +2,25 @@
## Версия v0.1.x
### v0.1.23-dev (2026-04-12) — billing: учёт SQS-операций в PostgreSQL
### v0.1.24 (2026-04-12) — Prometheus metrics + Victoria Metrics integration
- ✅ Новый пакет `app/metrics/` — Prometheus counters, histograms, gauges
- ✅ Endpoint `/metrics` в формате Prometheus (promhttp.Handler)
- ✅ Метрики: sqs_requests_total, sqs_request_bytes_total, sqs_request_duration_seconds, sqs_errors_total, sqs_queues_count, sqs_messages_count
- ✅ Labels: tenant, operation — для фильтрации в Grafana
- ✅ Gauge updater: пересчёт очередей/сообщений per tenant каждые 15s
- ✅ VMServiceScrape создан в namespace shared-sqs — VMAgent скрейпит каждые 30s
- ✅ Go 1.23 в Dockerfile (требование prometheus client)
- ✅ Docker image `naeel/shared-sqs:v0.1.24` — собран и запушен
- ✅ Live deploy: все метрики отдаются, quick_test 31/31 PASS
### v0.1.23 (2026-04-12) — billing: учёт SQS-операций в PostgreSQL
- ✅ Новый пакет `app/billing/` — подключение к PG, auto-migrate, async запись usage
- ✅ Интеграция в actionHandler — каждая успешная SQS-операция записывается
- ✅ Опциональность: если BILLING_PG_HOST не задан — billing выключен, SQS работает как раньше
- ✅ Helm chart: секция `billing:` в values.yaml, secret-billing.yaml, env в deployment.yaml
- ✅ Таблица `sqs_usage_records`: tenant_id, operation, msg_count, msg_bytes, recorded_at
-`go build ./...` — OK
- 🔲 Собрать Docker image и задеплоить с PostgreSQL credentials
- ✅ Таблица `sqs_usage_records`: tenant_id, operation, queue_name, msg_count, msg_bytes, recorded_at
-Docker image `naeel/shared-sqs:v0.1.23` — собран и задеплоен с PG credentials
- ✅ Live: billing данные пишутся в PostgreSQL (17 типов операций за тест)
### v0.1.22 (2026-04-12) — demo UI showcase mode deployed
- ✅ Demo UI token поддержан сервером: `demo-ui-shared-sqs-ngcloud-2026`
+45 -1
View File
@@ -431,4 +431,48 @@ sqs_usage_records (
INDEX: idx_sqs_usage_tenant_time (tenant_id, recorded_at)
```
Именно такое разделение и нужно, чтобы дальше не смешивать хорошие рабочие метрики сервиса с чужим инфраструктурным ограничением.
Именно такое разделение и нужно, чтобы дальше не смешивать хорошие рабочие метрики сервиса с чужим инфраструктурным ограничением.
---
## Prometheus Metrics + Victoria Metrics integration
### Контекст
После добавления billing (PostgreSQL) решено добавить Prometheus-метрики для мониторинга в реальном времени.
Проверил кластер — уже установлены:
- Victoria Metrics с оператором (namespace `victoria-metrics`)
- VMAgent с pod collectors — скрейпят через VMServiceScrape / VMPodScrape CRD
- Grafana на `grafana.ngcloud.ru` — подключена к VM
### Решение
Не писать свой мониторинг — подключиться к существующей инфраструктуре:
1. shared-sqs отдаёт `/metrics` в Prometheus-формате
2. VMServiceScrape говорит VMAgent скрейпить наш Service
3. Grafana видит данные через VM — дашборд можно создать вручную
### Метрики
| Метрика | Тип | Labels | Назначение |
|---------|-----|--------|-----------|
| `sqs_requests_total` | Counter | tenant, operation | Количество запросов |
| `sqs_request_bytes_total` | Counter | tenant, operation | Объём трафика |
| `sqs_request_duration_seconds` | Histogram | operation | Latency (бакеты 1ms — 30s) |
| `sqs_errors_total` | Counter | operation | Ошибки (HTTP >= 400) |
| `sqs_queues_count` | Gauge | tenant | Текущее кол-во очередей |
| `sqs_messages_count` | Gauge | tenant | Текущее кол-во сообщений |
### Реализация
- `app/metrics/metrics.go` — определение метрик через promauto
- `app/metrics/gauge_updater.go` — горутина, пересчёт gauges каждые 15s через RLock
- `router.go``/metrics` endpoint + инструментация actionHandler (duration, counters, errors)
- `goaws.go` — запуск gauge updater из main
- `deployments/k8s/vmservicescrape.yaml` — VMServiceScrape (каждые 30s, port http)
### Проблема: Go 1.22 → 1.23
Prometheus client v1.23.2 требует Go >= 1.23. go.mod обновился автоматически.
Пришлось обновить Dockerfile с `golang:1.22-alpine` на `golang:1.23-alpine`.
### Результат
- `/metrics` отдаёт все sqs_* метрики
- VMServiceScrape applied, status pending (VMAgent подхватывает)
- quick_test.sh: 31/31 PASS
- Docker image: `naeel/shared-sqs:v0.1.24`