Skip to main content
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:
  1. πŸ“Š Structured JSON Logging with OpenTelemetry trace injection
  2. ☁️ Multi-Platform Log Aggregation (AWS, GCP, Azure, Elasticsearch, Datadog, Splunk)
  3. 🐳 Containerized Integration Testing with zero-config Docker setup
  4. πŸ”§ 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.
  • βœ… 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
Core Logging:
  1. 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)
OTLP Collector Configurations (7): 2. monitoring/otel-collector/aws-cloudwatch.yaml (168 lines) - CloudWatch + X-Ray 3. monitoring/otel-collector/gcp-cloud-logging.yaml (152 lines) - Cloud Logging + Trace 4. monitoring/otel-collector/azure-monitor.yaml (138 lines) - Application Insights 5. monitoring/otel-collector/elasticsearch.yaml (192 lines) - ELK Stack with ECS 6. monitoring/otel-collector/datadog.yaml (157 lines) - Unified APM 7. monitoring/otel-collector/splunk.yaml (179 lines) - Enterprise/Cloud dual mode 8. monitoring/otel-collector/otel-collector.yaml (enhanced) - Base config with logs pipelineDeployment Automation: 9. scripts/switch-log-exporter.sh (105 lines) - Platform switcher CLI 10. deployments/kubernetes/base/otel-collector-deployment.yaml (305 lines)
  • ConfigMap, Service, Deployment, ServiceAccount, PDB, HPA
  1. deployments/kubernetes/overlays/aws/kustomization.yaml - AWS EKS overlay
  2. deployments/kubernetes/overlays/aws/otel-collector-config.yaml - AWS config
Configuration: 13. .env.example (updated +75 lines) - All platform credentials 14. docker/docker-compose.yml (enhanced) - Multi-platform OTLP support 15. src/mcp_server_langgraph/core/config.py - LOG_FORMAT, LOG_JSON_INDENT settings
Basic Usage (defaults to JSON):
Output:
Switch to Datadog:
Opt-out of JSON (use text format):
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.
  • βœ… 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)
  1. docker/docker-compose.test.yml - Test services configuration
    • PostgreSQL (in-memory via tmpfs)
    • OpenFGA (memory datastore)
    • Redis (no persistence)
    • Test runner container
  2. docker/Dockerfile.test - Optimized test runner image
    • Python 3.12-slim
    • Test dependencies only
    • Pre-configured environment
  3. scripts/test-integration.sh (200+ lines)
    • Orchestration script with options
    • Colored output, progress tracking
    • Automatic error handling
  4. scripts/wait-for-services.sh - Service health checker
  5. tests/utils/docker.py (250+ lines)
    • Docker test utilities
    • Service wait functions
    • TestEnvironment context manager
  6. tests/utils/init.py - Test utilities package
  7. docs/development/integration-testing.md (400+ lines)
    • Complete integration testing guide
    • Architecture overview
    • Debugging guide
  8. tests/conftest.py (MODIFIED)
    • Added real service fixtures
    • Auto-skip if not in Docker
Advanced usage:
Migration from v2.4.0:
  • βœ… Zero breaking changes - Old make test-integration-local still works
  • βœ… Backward compatible - All existing tests work unchanged
  • βœ… CI/CD update - Just remove continue-on-error: true from workflows

πŸ”§ Infisical Docker-Based Build Solution

Multi-track dependency strategy - Choose what works best for your environment.
Before:
  • Required Rust toolchain for local development
  • Platform compatibility issues (especially ARM64)
  • Slow builds (~5 minutes)
  • Failed on some systems
After:
  • 5 installation options (pick what works)
  • No Rust requirement for most users
  • 10x faster builds with caching
  • Graceful fallback to environment variables
  1. Docker Build (Recommended)
    • Zero configuration
    • Automatically includes Infisical
  2. uv extras (One-line install)
    • Easiest for local development
  3. Pre-built wheels (Fast, no Rust)
    • For CI/CD pipelines
  4. Build from source (Latest version)
    • For advanced users
  5. Skip Infisical (Use environment variables)
    • Simplest option, no installation
  1. requirements-infisical.txt - Separate dependency file
    • Comprehensive installation documentation
    • 5 installation options documented
  2. docker/Dockerfile.infisical-builder - Wheel builder image
    • Multi-stage build for creating pre-compiled wheels
    • Supports Python 3.10, 3.11, 3.12
  3. scripts/build-infisical-wheels.sh (270+ lines)
    • Automated wheel building
    • BuildKit support with caching
  4. docs/deployment/infisical-installation.md (500+ lines)
    • Comprehensive installation guide
    • Troubleshooting section
    • Performance comparisons
  5. tests/test_infisical_optional.py (20+ tests)
    • Tests graceful degradation
    • Environment variable fallback
With BuildKit caching:
  • First build: ~5 minutes (unchanged)
  • Cached rebuild: ~30 seconds (10x improvement)
  • Wheel reuse: ~5 seconds (100x improvement)
docker/Dockerfile enhancements:
Migration from v2.4.0:
  • βœ… 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

  1. pyproject.toml
    • Moved infisical-python from core to optional dependencies
    • Added [secrets] and [all] extras
  2. requirements-pinned.txt
    • Enhanced with 48-line installation guide

Docker Files

  1. docker/Dockerfile
    • Added BuildKit syntax directive
    • Implemented cache mounts (5-10x faster)
  2. docker-compose.yml
    • Fixed volume mounts for package structure

CI/CD

  1. .github/workflows/ci.yaml
    • Added Docker Buildx setup
    • Integration tests now run in containers
    • Removed continue-on-error: true

Build System

  1. Makefile
    • Added 6 new integration test targets

Benefits

For Developers

  • βœ… One command - make test-integration does everything
  • βœ… Zero setup - No manual service configuration
  • βœ… Perfect isolation - Tests don’t affect local dev
  • βœ… Fast cleanup - docker compose down -v removes everything
  • βœ… Debugging - --keep flag 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 changes
Step 2: (Optional) Choose Infisical installation method
Step 3: Run integration tests
Step 4: Update CI/CD

Testing 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

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