Skip to content

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):

Terminal window
# Run OpenTelemetry Collector with OTLP receivers
docker run -p 4317:4317 -p 4318:4318 \
-v $(pwd)/otel-collector-config.yaml:/etc/otelcol-contrib/config.yaml \
otel/opentelemetry-collector-contrib:latest

Basic 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:4318 or http://your-collector-host:4318
  • Default gRPC endpoint: http://localhost:4317 or http://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:

  1. YOUR_COLLECTOR_ENDPOINT with 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

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:

Terminal window
# Check collector logs
docker logs <collector-container-id>
# Or for Kubernetes
kubectl 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.