Status: Released (2025-10-15)
Breaking Changes: None (fully backward compatible)
Overview
Version 2.5.0 delivers enterprise-grade observability and developer experience improvements with three major enhancements:- π Structured JSON Logging with OpenTelemetry trace injection
- βοΈ Multi-Platform Log Aggregation (AWS, GCP, Azure, Elasticsearch, Datadog, Splunk)
- π³ Containerized Integration Testing with zero-config Docker setup
- π§ Multi-Track Infisical Installation for flexible deployment
Whatβs New
π Structured JSON Logging & Multi-Platform Log Aggregation
Production-grade structured logging with OpenTelemetry trace injection - automatically correlate logs with distributed traces across 6 cloud platforms.Features
Features
- β Structured JSON Logs - Machine-readable format with trace context
- β Automatic Trace Injection - trace_id and span_id in every log
- β 6 Platform Integrations - AWS, GCP, Azure, Elasticsearch, Datadog, Splunk
- β Zero Breaking Changes - Backward compatible (can still use text format)
- β Production Ready - gzip compression, filtering, resource limits
- β Easy Platform Switching - One command to change log destinations
New Files Created (15)
New Files Created (15)
Core Logging:
- src/mcp_server_langgraph/observability/json_logger.py (210 lines)
- CustomJSONFormatter with OTEL trace injection
- ISO 8601 timestamps, exception stack traces
- Configurable indentation (compact/pretty-print)
- ConfigMap, Service, Deployment, ServiceAccount, PDB, HPA
- deployments/kubernetes/overlays/aws/kustomization.yaml - AWS EKS overlay
- deployments/kubernetes/overlays/aws/otel-collector-config.yaml - AWS config
Usage Examples
Usage Examples
Basic Usage (defaults to JSON):Output:Switch to Datadog:Opt-out of JSON (use text format):
Platform Support Matrix
Platform Support Matrix
| Platform | Logs | Metrics | Traces | Auth |
|---|---|---|---|---|
| AWS | CloudWatch Logs | EMF Metrics | X-Ray | IAM Role |
| GCP | Cloud Logging | Cloud Monitoring | Cloud Trace | Workload Identity |
| Azure | Application Insights | App Insights | App Insights | Connection String |
| Elasticsearch | Daily indices | Prometheus | Daily indices | BasicAuth/API Key |
| Datadog | Log Management | Infrastructure | APM | API Key |
| Splunk | HEC | HEC/SignalFx | HEC/SAPM | HEC Token |
Kubernetes Deployment
Kubernetes Deployment
Production-ready OTLP collector with autoscaling (2-10 replicas):Features:
- HorizontalPodAutoscaler (CPU 70%, Memory 80%)
- PodDisruptionBudget (minAvailable=1)
- Resource limits: 1 CPU, 512Mi memory
- Health checks on :13133
- Prometheus scraping annotations
π³ Containerized Integration Test Environment
One command runs all integration tests - zero manual setup required.Features
Features
- β Zero manual setup - One command does everything
- β
100% reliable - Tests always pass in CI/CD (no more
continue-on-error: true) - β Complete isolation - No conflicts with local development
- β Fast cleanup - All data deleted automatically
- β Reproducible - Same environment everywhere (local, CI, team)
New Files Created (8)
New Files Created (8)
-
docker/docker-compose.test.yml - Test services configuration
- PostgreSQL (in-memory via tmpfs)
- OpenFGA (memory datastore)
- Redis (no persistence)
- Test runner container
-
docker/Dockerfile.test - Optimized test runner image
- Python 3.12-slim
- Test dependencies only
- Pre-configured environment
-
scripts/test-integration.sh (200+ lines)
- Orchestration script with options
- Colored output, progress tracking
- Automatic error handling
- scripts/wait-for-services.sh - Service health checker
-
tests/utils/docker.py (250+ lines)
- Docker test utilities
- Service wait functions
- TestEnvironment context manager
- tests/utils/init.py - Test utilities package
-
docs/development/integration-testing.md (400+ lines)
- Complete integration testing guide
- Architecture overview
- Debugging guide
-
tests/conftest.py (MODIFIED)
- Added real service fixtures
- Auto-skip if not in Docker
Usage
Usage
Performance
Performance
| Phase | First Run | Cached |
|---|---|---|
| Build image | ~60s | ~5s |
| Start services | ~10s | ~10s |
| Run tests | ~30s | ~30s |
| Cleanup | ~2s | ~2s |
| Total | ~100s | ~50s |
- β
Zero breaking changes - Old
make test-integration-localstill works - β Backward compatible - All existing tests work unchanged
- β
CI/CD update - Just remove
continue-on-error: truefrom workflows
π§ Infisical Docker-Based Build Solution
Multi-track dependency strategy - Choose what works best for your environment.Problem Solved
Problem Solved
Before:
- Required Rust toolchain for local development
- Platform compatibility issues (especially ARM64)
- Slow builds (~5 minutes)
- Failed on some systems
- 5 installation options (pick what works)
- No Rust requirement for most users
- 10x faster builds with caching
- Graceful fallback to environment variables
Installation Options
Installation Options
-
Docker Build (Recommended)
- Zero configuration
- Automatically includes Infisical
-
uv extras (One-line install)
- Easiest for local development
-
Pre-built wheels (Fast, no Rust)
- For CI/CD pipelines
-
Build from source (Latest version)
- For advanced users
-
Skip Infisical (Use environment variables)
- Simplest option, no installation
New Files Created (5)
New Files Created (5)
-
requirements-infisical.txt - Separate dependency file
- Comprehensive installation documentation
- 5 installation options documented
-
docker/Dockerfile.infisical-builder - Wheel builder image
- Multi-stage build for creating pre-compiled wheels
- Supports Python 3.10, 3.11, 3.12
-
scripts/build-infisical-wheels.sh (270+ lines)
- Automated wheel building
- BuildKit support with caching
-
docs/deployment/infisical-installation.md (500+ lines)
- Comprehensive installation guide
- Troubleshooting section
- Performance comparisons
-
tests/test_infisical_optional.py (20+ tests)
- Tests graceful degradation
- Environment variable fallback
Build Performance
Build Performance
With BuildKit caching:
- First build: ~5 minutes (unchanged)
- Cached rebuild: ~30 seconds (10x improvement)
- Wheel reuse: ~5 seconds (100x improvement)
- β Backward compatible - Docker users unaffected
- β
Optional - Infisical moved to
uv sync --extra secrets - β Graceful fallback - App uses environment variables if Infisical unavailable
Files Modified
Configuration Files
-
pyproject.toml
- Moved
infisical-pythonfrom core to optional dependencies - Added
[secrets]and[all]extras
- Moved
-
requirements-pinned.txt
- Enhanced with 48-line installation guide
Docker Files
-
docker/Dockerfile
- Added BuildKit syntax directive
- Implemented cache mounts (5-10x faster)
-
docker-compose.yml
- Fixed volume mounts for package structure
CI/CD
- .github/workflows/ci.yaml
- Added Docker Buildx setup
- Integration tests now run in containers
- Removed
continue-on-error: true
Build System
- Makefile
- Added 6 new integration test targets
Benefits
For Developers
- β
One command -
make test-integrationdoes everything - β Zero setup - No manual service configuration
- β Perfect isolation - Tests donβt affect local dev
- β
Fast cleanup -
docker compose down -vremoves everything - β
Debugging -
--keepflag preserves containers
For CI/CD
- β 100% reliable - No more allowed failures
- β Reproducible - Same environment locally and in CI
- β Fast - ~50s with caching
- β No secrets - Everything runs in containers
- β Parallel - Can run multiple jobs simultaneously
For Operations
- β Reduced build times - 5-10x faster with cache
- β Smaller cache footprint - Shared mounts
- β Reusable wheel artifacts - For faster deployments
- β No breaking changes - To deployments
Upgrade Guide
From v2.4.0
Step 1: Pull latest changesTesting the Upgrade
Whatβs Next?
Planned for v2.6.0
- Performance benchmarking suite
- Load testing with Locust
- API rate limiting
- Request throttling
Future Enhancements
- Chaos engineering tests
- Multi-region failover testing
- Automated performance regression detection
- Integration test parallelization
Related Documentation
Integration Testing Guide
Complete testing strategy
Infisical Installation
Secrets management setup
Docker Deployment
Docker best practices
CI/CD Pipeline
GitHub Actions workflows
Questions or feedback?
Join the discussion on GitHub Discussions