このガイドでは、Redis OpenTelemetryインテグレーションのインストールおよび設定時に発生する可能性のある一般的な問題について説明します。
Collectorの起動の問題
エラーメッセージ:
'receivers' unknown type: "redis" for id: "redis" (valid values: [elasticsearch hostmetrics ...])原因: ご使用のNRDOTバージョンにはRedisレシーバーが含まれていません。RedisレシーバーにはNRDOT v1.18.0+が必要です。
修正: 次のいずれか:
- NRDOTを最新バージョンにアップグレードします
- すべてのコミュニティレシーバーが含まれる
otelcol-contribに切り替えます
エラーメッセージ:
cannot unmarshal the configuration: error reading receivers configuration一般的な原因:
- 無効なYAMLのインデント(タブとスペースの混在)
- シェルスクリプトからConfigMapを作成する際のヒアドキュメントの問題
- コロンを含むエンドポイント値を囲む引用符が欠落している
修正:
$# Validate YAML syntax$python3 -c "import yaml; yaml.safe_load(open('/etc/nrdot-collector/redis-collector-config.yaml'))"確認方法:
$systemctl status nrdot-collector$# or$systemctl status otelcol-contrib一般的な原因:
- コレクター設定ファイルの無効なYAML
- 別のプロセスとのポート競合(ヘルスチェック用にポート13133を確認してください)
- メモリ不足(memory_limiterの
limit_mibを増やしてください)
修正:
$# Check for port conflicts$ss -tlnp | grep 13133エラーメッセージ:
failed to fetch Redis INFO: dial tcp 127.0.0.1:6379: connect: connection refused原因: Redisが実行されていない、誤ったエンドポイントが設定されている、またはファイアウォールが接続をブロックしています。
修正:
$# Verify Redis is running$redis-cli ping$
$# Test connectivity$nc -zv localhost 6379データエクスポートの問題
エラーメッセージ:
Exporting failed. 403 Forbidden原因: 無効なライセンスキー、またはリージョンのOTLPエンドポイントが正しくありません。
修正:
- ライセンスキーが正しく、アクティブであることを確認してください
- OTLPエンドポイントがアカウントのリージョンと一致していることを確認する
検証手順:
コレクターが実行中であることを確認します:
bash$systemctl is-active nrdot-collectorヘルスエンドポイントを確認します:
bash$curl http://localhost:13133NRQLでのテスト:
FROM Metric SELECT count(*) WHERE metricName LIKE 'redis.%' SINCE 10 minutes ago
ログ収集の問題
エラーメッセージ:
Failed to open file: /var/log/redis/redis-server.log: permission denied原因: コレクタープロセスにRedisログファイルへの読み取りアクセス権がありません。
修正(ホストベース):
$# 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-collector修正(Kubernetes):DaemonSetに/var/log/podsボリュームがreadOnly: trueでマウントされていることを確認します。
Kubernetes固有の問題
原因: ポッドのラベルがreceiver_creatorディスカバリルールと一致しません。
修正:
$# Check pod labels$kubectl get pods -n <namespace> --show-labels | grep redisConfigMapのruleがRedisポッドのラベルと一致することを確認してください。たとえば、ポッドにapp.kubernetes.io/name: redisがある場合は、それに応じてルールを更新してください。
確認方法:
$kubectl get pods -n newrelic$kubectl logs -n newrelic <pod-name> --previous一般的な原因:
- 無効なConfigMap YAML(
data.config.yamlフィールドのインデントを確認してください) - 認証情報用のKubernetesシークレットの欠落
- RBAC権限が欠落している(
k8s_observerを使用するDaemonSetの場合)
修正:
$# 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-redisエラー: Redisエンドポイントへの接続がタイムアウトしました。
修正:
$# 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> 6379一般的な原因:
ネームスペースが存在しません
無効なvalues.yaml
Helmリポジトリが追加されていない
修正:
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監視の問題
症状: インスタンスエンティティは表示されますが、Redis Clusterエンティティは作成されません。
一般的な原因:
redis.cluster.nameクラスタパイプラインに設定されていないredis.instance.idまたはクラスタメトリクスにserver.addressが存在する(クラスタエンティティルールの照合を妨げます)クラスタのメトリクスが無効になっています(Redisレシーバーでは、デフォルトですべてのクラスタのメトリクスが無効になっています)
修正: クラスタパイプラインに以下が含まれていることを確認します:
redis.cluster.nameresource/clusterプロセッサー経由で設定server.address: {enabled: false}およびクラスタレシーバー上のserver.port: {enabled: false}クラスタパイプライン上に
redis.instance.idがありませんNRQLで確認します:
SELECT count(*) FROM MetricWHERE redis.cluster.name IS NOT NULLAND redis.instance.id IS NULLAND server.address IS NULLSINCE 5 minutes agoこれが0を返す場合、クラスタメトリクスは正しく流れていません。
症状: Clusterエンティティは存在しますが、ダッシュボードには空のウィジェットが表示されます。
一般的な原因:
RedisはClusterモードで実行されていません(スタンドアロンインスタンスはクラスタメトリクスを生成しません)
Redisレシーバーの設定でClusterメトリクスが有効になっていません
修正: RedisがClusterモードであることを確認してください:
bash$redis-cli INFO cluster | grep cluster_enabledcluster_enabled:1を返す必要があります。0を返す場合、RedisはClusterモードではありません。レシーバー設定でクラスタメトリクスが有効になっていることを確認します:
redis/cluster:metrics:redis.cluster.state: {enabled: true}redis.cluster.known_nodes: {enabled: true}# ... all 9 cluster metrics must be explicitly enabled
症状: 同じクラスタに対して複数のRedis Clusterエンティティが表示されます。
原因: 異なるコレクターが同じクラスタに対して異なるredis.cluster.nameの値を使用しています。
修正: 同じクラスタを監視するすべてのコレクターが、resource/clusterプロセッサでまったく同じredis.cluster.name値を使用していることを確認します。クラスタのエンティティ識別子はこの名前です — 名前が異なると異なるエンティティが作成されます。
症状: クラスタとインスタンスの両方のエンティティが存在しますが、サービスマップにCONTAINS関係が表示されません。
原因: インスタンスメトリクスにはredis.cluster.name属性がないため、リレーションシップルールでリンクできません。
修正: インスタンスパイプラインのリソースプロセッサにredis.cluster.nameを追加します:
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: upsert症状: Redisが稼働しているように見えても、redis.cluster.stateが0(FAIL)を報告します。
一般的な原因:
16384個のハッシュスロットすべてが割り当てられているわけではありません(不完全なクラスタ設定)
マスターノードがダウンしており、自動フェイルオーバーに利用できるレプリカがありません
ノード間のネットワークパーティション
修正:
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 failcluster_slots_assignedが16384未満の場合、一部のスロットが未割り当てになります。不足しているスロット範囲を利用可能なノードに追加して修正します。
次のステップ
- インストレーションガイド: 設定手順を再確認する
- メトリクスリファレンス: 期待されるメトリクスを確認します
- データの検索: Redisメトリクスのクエリと集計