まずは分析バックエンドの動作を確認する
ではまず、テレメトリーデータが見れないという分析バックエンド側を確認しましょう。基本的なことですが、まずは「コンセントを刺しなおす」ところから始めるのがおすすめです。
- クエリしようとしているメトリクスの名前や、トレースのサービス名は正しいですか?
- 時間範囲の指定は正しいですか?
これらが正しいことを確認したあとで、分析バックエンドがテレメトリーデータを受け付けていることを確認していきましょう。
大抵の分析バックエンドでは、テレメトリーデータをどれだけ受け付けているかというシステムメトリクスを備えています。Prometheusであれば、rate(prometheus_tsdb_head_samples_appended_total[1m])
でクエリすることで、取り込んでいるメトリクスの数が可視化できます。また、Splunk Observabilityであれば、トレースやメトリクスの取り込みデータ量を示すダッシュボードが用意されています。
![トレース使用量ダッシュボード](http://cz-cdn.shoeisha.jp/static/images/article/20650/20650_002.png)
分析バックエンドでデータを受け付けているにもかかわらず、目的のデータがクエリできない場合には、以下を確認していきます。
まずは、面倒かもしれませんがもう一度、クエリ条件(タグ名や日時範囲など)に誤りがないかを見直しましょう。送信されたデータの構造やスキーマが正しいか確認し、意図した属性が含まれているかを確認しましょう。また、データの遅延やバックエンドのフィルタ設定、インジェスト制限が影響していないかも重要です。SaaSプラットフォームによっては、ライセンスその他の制限でデータをドロップすることがあり、その様子もメトリクスとして公開できることもあります。
![スロットリングダッシュボードの例](http://cz-cdn.shoeisha.jp/static/images/article/20650/20650_003.png)
以上を調査してもよくわからないときは、バックエンドサービスの不具合の可能性があるかもしれません。セルフホストしている場合はバックエンドサービスを運用しているプラットフォームチームに協力を依頼したり、SaaS製品の場合はテクニカルサポートに調査を依頼して、問題を解決していきましょう。
分析バックエンドでデータを受け付けている形跡がない場合は、テレメトリーデータパイプラインを一つ上流に遡って、コレクターを確認していくことになります。