feat(generator): доработка по ревью rev5 — тики, метрики, история

- Зачем:
  - ревью rev5 выявило несоответствие плану: дефолт 60s против 5s,
    неработающий jitter, отсутствие Prometheus-метрик и персистентности
- Что:
  - дефолт GEN_TICK_SECONDS изменён с 60s на 5s (steady-stream режим)
  - реализован GEN_JITTER_PCT в расчёте объёма тика (вариативность)
  - добавлены Prometheus метрики: generator_events_total,
    generator_publish_errors_total, generator_tick_duration_seconds,
    generator_last_success_timestamp (порт 9109)
  - добавлен ClickHouseBatchHistory с записью в meta.generator_batches
  - lazy import kafka-python для тестов без Kafka
  - обновлён scrape_config в configs/prometheus.yml
  - удалён нерабочий verify_kafka.py
- Проверка:
  - test_comprehensive.py: 9/9 тестов пройдено
  - docker build -t generator:rev5 . — успешно
  - docker-compose.yml валиден
This commit is contained in:
2026-06-09 17:27:01 +03:00
committed by Dmitry Dementiev
parent e8d1c9efa9
commit 04541677ff
8 changed files with 476 additions and 231 deletions
+8 -3
View File
@@ -291,23 +291,28 @@ services:
dockerfile: Dockerfile
environment:
KAFKA_BOOTSTRAP_SERVERS: kafka:29092
GEN_TICK_SECONDS: "60"
# Режим steady-stream: короткие тики 1-10 сек (по умолчанию 5)
GEN_TICK_SECONDS: "5"
GEN_LAMBDA_BASE_PER_MIN: "200"
GEN_JITTER_PCT: "20"
GEN_MIN_EVENTS_PER_TICK: "50"
GEN_MAX_EVENTS_PER_TICK: "500"
GEN_MIN_EVENTS_PER_TICK: "5"
GEN_MAX_EVENTS_PER_TICK: "50"
GEN_DATA_DIR: /data
GEN_ENABLED: "true"
GEN_METRICS_PORT: "9109"
CLICKHOUSE_HOST: clickhouse
CLICKHOUSE_PORT: "9000"
# PYTHONUNBUFFERED для сразу видеть логи
PYTHONUNBUFFERED: "1"
ports:
- "9109:9109" # Prometheus metrics endpoint
volumes:
- ./data:/data:ro
networks:
- cs_dwh
depends_on:
- kafka
- clickhouse
restart: unless-stopped
healthcheck:
test: ["CMD", "python", "-c", "import sys; sys.exit(0)"]