Parseable
Send Shield360 traces, metrics and logs to Parseable through an OpenTelemetry Collector.
1. Configure OpenTelemetry Collector
Parseable requires different dataset and source headers for each signal. Configure the Collector to add those headers and route each signal to its dataset.
Install the Collector
Skip installation when you run a Collector. To install one, follow the OpenTelemetry Collector installation guide.
Configure the Collector
The Collector accepts OTLP over HTTP and gRPC and sends each signal to a separate Parseable dataset.
Collector configuration
receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318
processors: batch: memory_limiter: limit_mib: 1500 spike_limit_mib: 512 check_interval: 5s
exporters: otlphttp/parseable_traces: endpoint: "${env:PARSEABLE_URL}" encoding: json headers: X-API-Key: "${env:PARSEABLE_API_KEY}" X-P-Stream: shield360-traces X-P-Log-Source: otel-traces
otlphttp/parseable_metrics: endpoint: "${env:PARSEABLE_URL}" encoding: json headers: X-API-Key: "${env:PARSEABLE_API_KEY}" X-P-Stream: shield360-metrics X-P-Log-Source: otel-metrics
otlphttp/parseable_logs: endpoint: "${env:PARSEABLE_URL}" encoding: json headers: X-API-Key: "${env:PARSEABLE_API_KEY}" X-P-Stream: shield360-logs X-P-Log-Source: otel-logs
service: pipelines: traces: receivers: [ otlp ] processors: [ memory_limiter, batch ] exporters: [ otlphttp/parseable_traces ] metrics: receivers: [ otlp ] processors: [ memory_limiter, batch ] exporters: [ otlphttp/parseable_metrics ] logs: receivers: [ otlp ] processors: [ memory_limiter, batch ] exporters: [ otlphttp/parseable_logs ]Set these environment variables before starting the Collector:
export PARSEABLE_URL="https://YOUR_PARSEABLE_HOST"export PARSEABLE_API_KEY="YOUR_PARSEABLE_API_KEY"Replace:
YOUR_PARSEABLE_HOSTwith your Parseable host. Do not append/v1/traces,/v1/metrics, or/v1/logs.YOUR_PARSEABLE_API_KEYwith a Parseable API key that has ingest access.
If your Parseable deployment uses Basic Auth, replace X-API-Key with Authorization: "Basic YOUR_BASE64_CREDENTIALS" in each exporter.
2. Instrument your application
import shield360
shield360.init( otlp_endpoint="http://YOUR_OTELCOL_HOST:4318")Replace http://YOUR_OTELCOL_HOST:4318 with the HTTP endpoint, including the scheme, of your OpenTelemetry Collector.
- Local Collector:
http://127.0.0.1:4318 - Kubernetes:
http://otel-collector.monitoring.svc.cluster.local:4318
import shield360
shield360.init()Set the Collector endpoint, including the scheme:
export OTEL_EXPORTER_OTLP_ENDPOINT="http://YOUR_OTELCOL_HOST:4318"shield360-instrument \ --otlp-endpoint "http://YOUR_OTELCOL_HOST:4318" \ --service-name "my-ai-service" \ --deployment-environment "production" \ python app.pyexport OTEL_EXPORTER_OTLP_ENDPOINT="http://YOUR_OTELCOL_HOST:4318"export OTEL_SERVICE_NAME="my-ai-service"export OTEL_DEPLOYMENT_ENVIRONMENT="production"
shield360-instrument python app.pySee the Shield360 SDK configuration reference for more configuration options.
3. Explore your telemetry
Run your application and confirm that Parseable receives records in these datasets:
shield360-tracesshield360-metricsshield360-logs
Filter by service.name to isolate your application. If a dataset is empty, check the Collector logs, Parseable URL, and API key permissions.