SigNoz
SigNoz is an open-source observability platform that speaks OTLP natively across all three signals. It's one of the few OSS options that unifies traces, metrics, and logs in a single UI.
Signals: traces + metrics + logs. Deployment: local (docker compose) or cloud. Cost: OSS (self-host) / free tier + paid (cloud).
Self-hosted
A ready-to-use compose file ships with the plugin. The upstream SigNoz stack uses port 4318 for OTLP/HTTP, which collides with Phoenix — the bundled compose remaps SigNoz's OTLP HTTP port to 4328 to avoid that:
cd ~/.hermes/plugins/hermes_otel
docker compose -f docker-compose/signoz/docker-compose.yaml up -d
Then:
export OTEL_SIGNOZ_ENDPOINT="http://localhost:4328/v1/traces"
export OTEL_PROJECT_NAME="hermes-agent"
UI at http://localhost:3301 (SigNoz's default port).
SigNoz Cloud
export OTEL_SIGNOZ_ENDPOINT="https://ingest.us.signoz.cloud:443/v1/traces"
export OTEL_SIGNOZ_INGESTION_KEY="sz-..."
When OTEL_SIGNOZ_INGESTION_KEY is set, the plugin attaches the signoz-ingestion-key header to both the traces and metrics exporters.
Regional endpoints:
- US:
https://ingest.us.signoz.cloud:443/v1/traces - EU:
https://ingest.eu.signoz.cloud:443/v1/traces - India:
https://ingest.in.signoz.cloud:443/v1/traces
Multi-backend config
backends:
- type: signoz
endpoint: http://localhost:4328/v1/traces
# SigNoz Cloud only — ignored by self-hosted
ingestion_key_env: OTEL_SIGNOZ_INGESTION_KEY
What you'll see
SigNoz treats the plugin's spans as standard OTel traces. The service-map view lights up with the session → llm → api → tool edges, and the trace detail panel shows the nested span tree with the full attribute payload.
Metrics flow to the SigNoz metrics UI automatically:
hermes.tokens.prompt/hermes.tokens.completion(counters)hermes.tool.calls(counter)hermes.tool.duration(histogram)hermes.api.duration(histogram)
See Span attributes reference for the full list.
Attribute convention
SigNoz reads gen_ai.* attributes for LLM-specific views, which the plugin emits alongside the OpenInference llm.* convention. Both sets land on the same spans — SigNoz uses whichever it recognises.
Troubleshooting
"Port 4318 is already in use"
- Phoenix and SigNoz both default to 4318 for OTLP/HTTP. The bundled compose file remaps SigNoz to 4328. If you've customised it, double-check the port.
"Cloud ingestion: 401 / missing key"
- The ingestion key is required for SigNoz Cloud. The header is
signoz-ingestion-key, notAuthorization. The plugin sets it automatically whenOTEL_SIGNOZ_INGESTION_KEYis defined.
"Metrics show up, traces don't"
- You might be pointing metrics at the right endpoint but traces at the wrong one.
OTEL_SIGNOZ_ENDPOINTis for traces; metrics go to a parallel/v1/metricspath which the plugin derives automatically from the trace endpoint. If you've set a fully custom endpoint viaconfig.yaml, double-check the path.