Добавлен OTLP-провайдер, реализовано отбрасывание метрик и трейсов в observability + добавлен перезапуск nginx при пересборке контейнеров (ошибка, когда докер меняет адреса сервисов)

This commit is contained in:
mi
2026-07-29 15:15:40 +03:00
parent 3ed7239efa
commit 41e19005fb
43 changed files with 3016 additions and 83 deletions
+29
View File
@@ -140,12 +140,41 @@ class InfrastructureConfigTests(unittest.TestCase):
"http.request.header.authorization",
"http.request.header.cookie",
"url.query",
"url.full",
"db.statement",
"db.query.text",
"messaging.message.body",
"aws.s3.key",
):
self.assertIn(forbidden_attribute, config)
self.assertIn("storage: file_storage", config)
self.assertIn("retry_on_failure:", config)
self.assertIn('insecure: "${env:OTEL_REMOTE_TLS_INSECURE}"', config)
self.assertIn("tail_sampling:", config)
self.assertNotIn("probabilistic_sampler:", config)
self.assertIn('targets: ["sms-service:8080"]', config)
self.assertIn('targets: ["sms-worker:9464"]', config)
self.assertIn('targets: ["keycloak:9000"]', config)
self.assertIn("metric_relabel_configs:", config)
compose = (ROOT / "observability/docker-compose.yml").read_text(encoding="utf-8")
self.assertIn("OTEL_REMOTE_TLS_INSECURE: ${OTEL_REMOTE_TLS_INSECURE:-false}", compose)
self.assertIn("networks: [observability, egress]", compose)
self.assertNotIn("networks: [observability, backend, egress]", compose)
application = (ROOT / "infra/compose/application.yml").read_text(encoding="utf-8")
self.assertIn("OTEL_SERVICE_NAME: ${OTEL_SERVICE_NAME_API:-api-backend}", application)
self.assertIn("OTEL_SERVICE_NAME: ${OTEL_SERVICE_NAME_SMS_API:-sms-service}", application)
self.assertIn("OTEL_SERVICE_NAME: ${OTEL_SERVICE_NAME_SMS_WORKER:-sms-worker}", application)
self.assertIn('expose: ["9464"]', application)
for service_main in (
ROOT / "api-backend/app/main.py",
ROOT / "sms-service/app/main.py",
):
source = service_main.read_text(encoding="utf-8")
self.assertNotIn("route=request.url.path", source)
self.assertIn('getattr(request.scope.get("route"), "path"', source)
worker = (ROOT / "sms-service/app/worker.py").read_text(encoding="utf-8")
for span_name in ("sms.claim", "sms.process", "sms.provider", "sms.save_result"):
self.assertIn(f'"{span_name}"', worker)
def test_settings_cli_and_workers_are_deployable(self) -> None:
cli = ROOT / "api-backend/app/cli"