Files
SQS-service/doc/billing-and-metrics.md
T

96 lines
3.8 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.
# Биллинг и метрики
## Биллинг (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 операций (1ms30s) |
| `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-ом.