doc: update progress and thinking log for v0.1.23-v0.1.24 (billing + metrics)
This commit is contained in:
+15
-4
@@ -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`
|
||||
|
||||
@@ -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`
|
||||
Reference in New Issue
Block a user