SCOM-based microservice boundary analysis from Jaeger traces
Project description
Changelog
v0.3.8 (2026-06-17)
Consolidation — single-service orchestrator
- deploy.py: Python services always use OTLP HTTP/4318 (removed conditional gRPC fallback). Smart Jaeger detection (
_jaeger_alive,_docker_container_exists) with 3-case restart logic. NewDOCKER_START_FAILEDerror code. - discover.py: Service deduplication by
(name, deployment). Subdirectory scanning for monorepos (_is_service_dir,_discover_subdirectory_services). - orchestrator.py: New
_llm_instrument_servicesstep called between discovery and deploy, triggered by--llmflag +OPENROUTER_API_KEY. Falls back silently to Dockerfile patching. - prompts.py: Universal framework-agnostic prompt replaces FastAPI/Flask-only prompt. Python reference appendix (FastAPI, Flask, Django, SQLAlchemy).
- instrumentation.py: Passes structured
contextdict for richer prompts. - Tests: All 561 pass with updated env vars and prompt text.
v0.3.7 (2026-06-16)
Bug fixes
- Pipeline crash when no services are flagged suspicious (
EmptyDataErroron empty CSV). Added size check and try/except inreport_builder.py.
v0.3.6 (2026-06-16)
Features
- ENTRYPOINT injected directly into
.mba-Dockerfileinstead of composeentrypointoverride (Docker Compose v5 on Windows clears CMD when entrypoint is set in YAML) opentelemetry-distroadded as runtime dependency (providesOpenTelemetryConfiguratorentry point, needed for SDK config from env vars)- Windows console encoding fix:
sys.stdout.reconfigure(encoding='utf-8')in CLI module
v0.3.5 (2026-06-16)
Features
- Build-time OTel install: generates
.mba-DockerfilewithRUN pip install opentelemetry-distro opentelemetry-instrumentation-flasketc. at build time - Compose override points
build.dockerfileto.mba-Dockerfile - Cleanup of
.mba-Dockerfilefiles after analysis
v1.0.0 (2026-06-11)
Features
- SCOM pipeline : computes Service-COhesion Metric from Jaeger traces (health filtering, endpoint extraction, DB table detection, endpoint-table mapping, threshold analysis, report generation)
- CLI tool :
mba/boundary-analyzercommands (run,setup,dashboard,teastore) - Auto-instrumentation : auto-detects Python microservices (FastAPI, Flask, Django), injects OpenTelemetry, collects traces via Jaeger, runs SCOM analysis
- TeaStore support : Docker Compose deployment with OTel Java agent, traffic generator, trace exporter, full SCOM pipeline
- Dashboard : interactive Dash web UI for SCOM results
- LLM analysis (optional) : AI-powered narrative report via OpenRouter (Qwen), disabled by default
Improvements
- Segment-based health matching (
HEALTH_KEYWORDS) instead of fragileendswith—/health/all,/auth/health,/ready/isready,/metrics(viahttp.target) correctly filtered --skip-no-db-servicesflag to exclude stateless services (proxy, orchestrator, etc.) from SCOM rankingrun_teastore()function extracted for programmatic access
Bug fixes
- MissingGreenlet in classroom-repository (added
selectinload) - datetime timezone-aware comparison in enrollment-service
academic_yearint→str conversion in enrollment-service- Scope bug in
cleaned_partsvariable in CLI cleanup logic - SQLAlchemy duplicate instrumentation (event listeners only, no
SQLAlchemyInstrumentor/AsyncPGInstrumentor) [project.scripts]whitespace in pyproject.toml
Tests
- 74 tests total (58 existing + 16 TeaStore)
- TeaStore synthetic fixtures (persistence-service with 5 tables, auth-service without DB)
- 3 test classes : TeaStorePipelineTest, TeaStoreSkipNoDbTest, TeaStoreNoFilterTest
Infrastructure
- CI via GitHub Actions (
.github/workflows/ci.yml) — Python 3.11 × 3.12 mbaCLI alias alongsideboundary-analyzer- Version bump to 0.2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
boundary_analyzer-0.3.8.tar.gz
(146.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file boundary_analyzer-0.3.8.tar.gz.
File metadata
- Download URL: boundary_analyzer-0.3.8.tar.gz
- Upload date:
- Size: 146.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d9d460b5e319bd4f3dd92663609209c1cc5e02e7c1e7fba783308bb8b1678f4
|
|
| MD5 |
84f1cb876863a9ce77dc8b61eec7a574
|
|
| BLAKE2b-256 |
849b9e2d3126ee1674054c03a6e83f6743dbd56498b840a0a832b5f502ce2004
|
File details
Details for the file boundary_analyzer-0.3.8-py3-none-any.whl.
File metadata
- Download URL: boundary_analyzer-0.3.8-py3-none-any.whl
- Upload date:
- Size: 144.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a55d86a1af8b46b1c2e0b1c1666836b1f9dd1198396e6618c530da788a93df88
|
|
| MD5 |
782633c722f0b75e003c030e6d16a1ce
|
|
| BLAKE2b-256 |
a0052f45ccc38f69f4b3edba0607ca4de72c2e8cc3666c34bd2559dd8d0a5c9b
|