OpenTelemetry Collector
To send OpenTelemetry metrics and traces generated by Shield360 from your AI Application to an OpenTelemetry Collector, follow the below steps.
The OpenTelemetry Collector is a vendor-agnostic way to receive, process, and export telemetry data. It can act as an intermediary to route your Shield360 data to multiple backends or apply processing transformations.
1. Deploy OpenTelemetry Collector
Install the Collector (choose your preferred method):
# Run OpenTelemetry Collector with OTLP receiversdocker run -p 4317:4317 -p 4318:4318 \ -v $(pwd)/otel-collector-config.yaml:/etc/otelcol-contrib/config.yaml \ otel/opentelemetry-collector-contrib:latest# Deploy using Helmhelm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-chartshelm install my-otel-collector open-telemetry/opentelemetry-collector \ --set config.receivers.otlp.protocols.grpc.endpoint="0.0.0.0:4317" \ --set config.receivers.otlp.protocols.http.endpoint="0.0.0.0:4318"# Download and run the collector binarycurl -LO https://github.com/open-telemetry/opentelemetry-collector-releases/releases/latest/download/otelcol-contrib_linux_amd64.tar.gztar -xzf otelcol-contrib_linux_amd64.tar.gz./otelcol-contrib --config=otel-collector-config.yamlBasic Collector Configuration:
Create an otel-collector-config.yaml file:
Basic OTLP Configuration
receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318
processors: batch:
exporters: logging: loglevel: debug # Add your preferred backend exporters here # Examples: jaeger, prometheus, otlp, etc.
service: pipelines: traces: receivers: [otlp] processors: [batch] exporters: [logging] metrics: receivers: [otlp] processors: [batch] exporters: [logging]Get the Collector Endpoint:
- Default HTTP endpoint:
http://localhost:4318orhttp://your-collector-host:4318 - Default gRPC endpoint:
http://localhost:4317orhttp://your-collector-host:4317
2. Instrument your application
For direct integration into your Python applications:
import shield360
shield360.init( otlp_endpoint="YOUR_COLLECTOR_ENDPOINT")Replace:
YOUR_COLLECTOR_ENDPOINTwith your OpenTelemetry Collector endpoint from Step 1.- Local HTTP:
http://localhost:4318 - Local gRPC:
http://localhost:4317 - Remote:
http://your-collector-host:4318 - Kubernetes:
http://my-otel-collector:4318
- Local HTTP:
import shield360
shield360.init()Set these environment variables:
export OTEL_EXPORTER_OTLP_ENDPOINT="YOUR_COLLECTOR_ENDPOINT"export OTEL_SERVICE_NAME="my-ai-service"export OTEL_DEPLOYMENT_ENVIRONMENT="production"Replace:
YOUR_COLLECTOR_ENDPOINTwith your OpenTelemetry Collector endpoint from Step 1.
Refer to the Shield360 SDK configuration reference for more advanced configurations and use cases.
For zero-code auto-instrumentation via command line:
# Using CLI argumentsshield360-instrument \ --otlp-endpoint "YOUR_COLLECTOR_ENDPOINT" \ --service-name "my-ai-service" \ --deployment-environment "production" \ python app.pyReplace:
YOUR_COLLECTOR_ENDPOINTwith your OpenTelemetry Collector endpoint from Step 1.
# Set environment variables (takes precedence over CLI args)export OTEL_EXPORTER_OTLP_ENDPOINT="YOUR_COLLECTOR_ENDPOINT"export OTEL_SERVICE_NAME="my-ai-service"export OTEL_DEPLOYMENT_ENVIRONMENT="production"
# Run your applicationshield360-instrument python app.pyReplace:
YOUR_COLLECTOR_ENDPOINTwith your OpenTelemetry Collector endpoint from Step 1.
Refer to the Shield360 SDK configuration reference for more advanced configurations and use cases.
3. Configure Collector Exporters
Once your LLM application is sending data to the OpenTelemetry Collector, configure exporters to send data to your preferred observability backends:
Popular Exporter Configurations:
Jaeger (Traces)
exporters: jaeger: endpoint: http://jaeger-collector:14250 tls: insecure: false
service: pipelines: traces: receivers: [otlp] processors: [batch] exporters: [jaeger]Prometheus (Metrics)
exporters: prometheus: endpoint: "0.0.0.0:8889" metric_expiration: 180m
service: pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [prometheus]Multiple Backends
exporters: otlp/backend1: endpoint: http://backend1:4317 otlp/backend2: endpoint: http://backend2:4317 logging: loglevel: debug
service: pipelines: traces: receivers: [otlp] processors: [batch] exporters: [otlp/backend1, otlp/backend2, logging] metrics: receivers: [otlp] processors: [batch] exporters: [otlp/backend1, otlp/backend2]Monitor Collector Health:
# Check collector logsdocker logs <collector-container-id>
# Or for Kuberneteskubectl logs -l app.kubernetes.io/name=opentelemetry-collector
# Health check endpoint (if enabled)curl http://localhost:13133/Benefits of Using OpenTelemetry Collector:
- Vendor Agnostic: Route data to multiple backends simultaneously
- Data Processing: Apply transformations, filtering, and sampling
- Protocol Translation: Convert between different telemetry formats
- Buffering & Reliability: Handle network issues and backend outages
- Cost Optimization: Sample and filter data to reduce costs
- Security: Add authentication, encryption, and data anonymization
Your Shield360-instrumented AI applications will send telemetry data to the Collector, which can then process and route it to any number of observability backends, providing flexibility and powerful data processing capabilities for your LLM monitoring infrastructure.