doc: add billing and metrics documentation
This commit is contained in:
@@ -89,6 +89,7 @@ aws sqs send-message \
|
|||||||
## Документация
|
## Документация
|
||||||
|
|
||||||
- [PLAN.md](PLAN.md) — детальный план разработки
|
- [PLAN.md](PLAN.md) — детальный план разработки
|
||||||
|
- [doc/billing-and-metrics.md](doc/billing-and-metrics.md) — биллинг и Prometheus-метрики
|
||||||
- [doc/byoc-credentials.md](doc/byoc-credentials.md) — BYOC интеграция
|
- [doc/byoc-credentials.md](doc/byoc-credentials.md) — BYOC интеграция
|
||||||
|
|
||||||
## Ссылки
|
## Ссылки
|
||||||
|
|||||||
@@ -0,0 +1,95 @@
|
|||||||
|
# Биллинг и метрики
|
||||||
|
|
||||||
|
## Биллинг (Usage Tracking)
|
||||||
|
|
||||||
|
Каждая успешная SQS-операция записывается в PostgreSQL — таблица `sqs_usage_records`.
|
||||||
|
|
||||||
|
### Что записывается
|
||||||
|
|
||||||
|
| Поле | Тип | Описание |
|
||||||
|
|------|-----|----------|
|
||||||
|
| `id` | BIGSERIAL | PK, автоинкремент |
|
||||||
|
| `tenant_id` | TEXT | Идентификатор тенанта |
|
||||||
|
| `operation` | TEXT | SQS-операция (SendMessage, ReceiveMessage и т.д.) |
|
||||||
|
| `queue_name` | TEXT | Имя очереди |
|
||||||
|
| `msg_count` | INTEGER | Количество сообщений в запросе |
|
||||||
|
| `msg_bytes` | BIGINT | Объём тел сообщений в байтах |
|
||||||
|
| `recorded_at` | TIMESTAMPTZ | Время записи |
|
||||||
|
|
||||||
|
Индекс: `(tenant_id, recorded_at)`.
|
||||||
|
|
||||||
|
### Конфигурация
|
||||||
|
|
||||||
|
Billing включается автоматически если заданы переменные окружения:
|
||||||
|
|
||||||
|
| Переменная | Пример | Описание |
|
||||||
|
|-----------|--------|----------|
|
||||||
|
| `BILLING_PG_HOST` | `postgresqlk8s-master.xxx.svc.cluster.local` | Хост PostgreSQL |
|
||||||
|
| `BILLING_PG_PORT` | `5432` | Порт |
|
||||||
|
| `BILLING_PG_DATABASE` | `sqsdb` | Имя базы |
|
||||||
|
| `BILLING_PG_USER` | `super` | Пользователь |
|
||||||
|
| `BILLING_PG_PASSWORD` | `***` | Пароль |
|
||||||
|
| `BILLING_PG_SSLMODE` | `disable` | SSL режим |
|
||||||
|
|
||||||
|
Если `BILLING_PG_HOST` не задан — billing отключён, SQS работает как раньше без зависимости от PG.
|
||||||
|
|
||||||
|
### Доступ к данным
|
||||||
|
|
||||||
|
Подключение к БД из кластера:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl exec -it pod/postgresqlk8s-master-0 \
|
||||||
|
-n dc5db45d-f8b4-4fd0-ad33-ec4dd017f2d5 \
|
||||||
|
-- psql -U super -d sqsdb
|
||||||
|
```
|
||||||
|
|
||||||
|
Примеры запросов:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- Последние 20 записей
|
||||||
|
SELECT * FROM sqs_usage_records ORDER BY recorded_at DESC LIMIT 20;
|
||||||
|
|
||||||
|
-- Статистика по операциям
|
||||||
|
SELECT operation, COUNT(*), SUM(msg_count), SUM(msg_bytes)
|
||||||
|
FROM sqs_usage_records GROUP BY operation ORDER BY count DESC;
|
||||||
|
|
||||||
|
-- По тенанту за сегодня
|
||||||
|
SELECT operation, COUNT(*) FROM sqs_usage_records
|
||||||
|
WHERE tenant_id = 'MY_TENANT' AND recorded_at >= CURRENT_DATE
|
||||||
|
GROUP BY operation;
|
||||||
|
|
||||||
|
-- Объём трафика по дням
|
||||||
|
SELECT DATE(recorded_at) AS day, SUM(msg_bytes) AS total_bytes
|
||||||
|
FROM sqs_usage_records GROUP BY day ORDER BY day DESC;
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Prometheus-метрики
|
||||||
|
|
||||||
|
Сервис отдаёт метрики на endpoint `/metrics` в формате Prometheus. Victoria Metrics скрейпит их через VMServiceScrape каждые 30 секунд.
|
||||||
|
|
||||||
|
### Доступные метрики
|
||||||
|
|
||||||
|
| Метрика | Тип | Labels | Описание |
|
||||||
|
|---------|-----|--------|----------|
|
||||||
|
| `sqs_requests_total` | Counter | tenant, operation | Количество SQS-запросов |
|
||||||
|
| `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 | Текущее количество сообщений |
|
||||||
|
|
||||||
|
### Просмотр метрик
|
||||||
|
|
||||||
|
Напрямую с пода:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl exec -it deploy/shared-sqs -n shared-sqs \
|
||||||
|
-- wget -qO- http://localhost:9090/metrics | grep sqs_
|
||||||
|
```
|
||||||
|
|
||||||
|
### VMServiceScrape
|
||||||
|
|
||||||
|
Файл: `deployments/k8s/vmservicescrape.yaml` — автоматический scrape Victoria Metrics.
|
||||||
|
Namespace `shared-sqs` помечен лейблом `shturval.tech/system-namespace` для обнаружения VMAgent-ом.
|
||||||
Reference in New Issue
Block a user