This guide covers common issues you may encounter when installing and configuring the Redis OpenTelemetry integration.
Collector startup issues
Error message:
'receivers' unknown type: "redis" for id: "redis" (valid values: [elasticsearch hostmetrics ...])Cause: Your NRDOT version does not include the Redis receiver. The Redis receiver requires NRDOT v1.18.0+.
Fix: Either:
- Upgrade NRDOT to the latest version
- Switch to
otelcol-contrib, which includes all community receivers
Error message:
cannot unmarshal the configuration: error reading receivers configurationCommon causes:
- Invalid YAML indentation (mixed tabs and spaces)
- Heredoc issues when creating ConfigMaps from shell scripts
- Missing quotes around endpoint values containing colons
Fix:
$# Validate YAML syntax$python3 -c "import yaml; yaml.safe_load(open('/etc/nrdot-collector/redis-collector-config.yaml'))"How to check:
$systemctl status nrdot-collector$# or$systemctl status otelcol-contribCommon causes:
- Invalid YAML in the collector configuration file
- Port conflict with another process (check port 13133 for health check)
- Insufficient memory (increase
limit_mibin memory_limiter)
Fix:
$# Check for port conflicts$ss -tlnp | grep 13133Error message:
failed to fetch Redis INFO: dial tcp 127.0.0.1:6379: connect: connection refusedCause: Redis is not running, wrong endpoint configured, or firewall blocking connection.
Fix:
$# Verify Redis is running$redis-cli ping$
$# Test connectivity$nc -zv localhost 6379Data export issues
Error message:
Exporting failed. 403 ForbiddenCause: Invalid license key or incorrect OTLP endpoint for your region.
Fix:
- Verify your license key is correct and active
- Ensure the OTLP endpoint matches your account region
Verification steps:
Check the collector is running:
bash$systemctl is-active nrdot-collectorCheck the health endpoint:
bash$curl http://localhost:13133Test with NRQL:
FROM Metric SELECT count(*) WHERE metricName LIKE 'redis.%' SINCE 10 minutes ago
Log collection issues
Error message:
Failed to open file: /var/log/redis/redis-server.log: permission deniedCause: The collector process doesn't have read access to the Redis log file.
Fix (host-based):
$# Option 1: Make the log file readable$sudo chmod 644 /var/log/redis/redis-server.log$
$# Option 2: Add collector user to redis group$sudo usermod -a -G redis nrdot-collectorFix (Kubernetes): Ensure the DaemonSet has the /var/log/pods volume mounted with readOnly: true.
Kubernetes-specific issues
Cause: Pod labels don't match the receiver_creator discovery rule.
Fix:
$# Check pod labels$kubectl get pods -n <namespace> --show-labels | grep redisEnsure the rule in your ConfigMap matches the labels on your Redis pods. For example, if your pods have app.kubernetes.io/name: redis, update the rule accordingly.
How to check:
$kubectl get pods -n newrelic$kubectl logs -n newrelic <pod-name> --previousCommon causes:
- Invalid ConfigMap YAML (check indentation in the
data.config.yamlfield) - Missing Kubernetes secret for credentials
- RBAC permissions missing (for DaemonSet with
k8s_observer)
Fix:
$# Validate ConfigMap content$kubectl get configmap otel-collector-redis-config -n newrelic -o jsonpath='{.data.config\.yaml}' | python3 -c "import yaml,sys; yaml.safe_load(sys.stdin); print('Valid YAML')"$
$# Check secret exists$kubectl get secret newrelic-credentials -n newrelic$
$# Check RBAC$kubectl auth can-i list pods --as=system:serviceaccount:newrelic:otel-collector-redisError: Connection timeout to Redis endpoint.
Fix:
$# Verify Redis pods are running$kubectl get pods -n <namespace> -l app=redis$
$# Test connectivity from collector pod$kubectl exec -n newrelic <collector-pod> -- nc -zv <redis-pod-ip> 6379Common causes:
Namespace doesn't exist
Invalid values.yaml
Helm repo not added
Fix:
bash$# Create namespace first$kubectl create namespace newrelic$$# Validate (dry run)$helm template redis-otel open-telemetry/opentelemetry-collector -f values.yaml --dry-run
Cluster monitoring issues
Symptoms: Instance entities appear but no Redis Cluster entity is created.
Common causes:
redis.cluster.namenot set on the cluster pipelineredis.instance.idorserver.addresspresent on cluster metrics (prevents cluster entity rule from matching)Cluster metrics disabled (all cluster metrics are disabled by default in the Redis receiver)
Fix: Verify your cluster pipeline has:
redis.cluster.nameset viaresource/clusterprocessorserver.address: {enabled: false}andserver.port: {enabled: false}on the cluster receiverNo
redis.instance.idon the cluster pipelineVerify with NRQL:
SELECT count(*) FROM MetricWHERE redis.cluster.name IS NOT NULLAND redis.instance.id IS NULLAND server.address IS NULLSINCE 5 minutes agoIf this returns 0, cluster metrics are not flowing correctly.
Symptoms: Cluster entity exists but dashboard shows empty widgets.
Common causes:
Redis is not running in Cluster mode (standalone instances don't produce cluster metrics)
Cluster metrics not enabled in the Redis receiver config
Fix: Verify Redis is in Cluster mode:
bash$redis-cli INFO cluster | grep cluster_enabledShould return
cluster_enabled:1. If it returns0, your Redis is not in Cluster mode.Verify cluster metrics are enabled in your receiver config:
redis/cluster:metrics:redis.cluster.state: {enabled: true}redis.cluster.known_nodes: {enabled: true}# ... all 9 cluster metrics must be explicitly enabled
Symptoms: More than one Redis Cluster entity appears for the same cluster.
Cause: Different collectors are using different redis.cluster.name values for the same cluster.
Fix: Ensure all collectors monitoring the same cluster use the exact same redis.cluster.name value in their resource/cluster processor. The cluster entity identifier is this name — different names create different entities.
Symptoms: Both cluster and instance entities exist but no CONTAINS relationship appears in service maps.
Cause: Instance metrics don't carry the redis.cluster.name attribute, so the relationship rule can't link them.
Fix: Add redis.cluster.name to your instance pipeline's resource processor:
resource/redis_identity: attributes: - key: redis.instance.id value: "my-instance:6379" action: upsert - key: redis.cluster.name value: "my-redis-cluster" # Must match the cluster pipeline value action: upsertSymptoms: redis.cluster.state reports 0 (FAIL) even though Redis appears operational.
Common causes:
Not all 16384 hash slots are assigned (incomplete cluster setup)
A master node is down with no available replica for automatic failover
Network partition between nodes
Fix:
bash$# Check cluster state directly$redis-cli CLUSTER INFO | grep cluster_state$$# Check slot coverage$redis-cli CLUSTER INFO | grep cluster_slots$$# Check for failed nodes$redis-cli CLUSTER NODES | grep failIf
cluster_slots_assignedis less than 16384, some slots are unassigned. Fix by adding the missing slot ranges to available nodes.
Next steps
- Installation guides: Revisit configuration steps
- Metrics reference: Verify expected metrics
- Find your data: Query and alert on Redis metrics