# Биллинг и метрики ## Биллинг (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-ом.