コンテンツにスキップ

データ欠落のトラブルシューティング

概要

本記事では、Guanceのログ、トレース、メトリクスにおけるデータ欠落のトラブルシューティング方法について説明します。

アーキテクチャ図

Guanceのデータフローは以下のとおりです。

  1. DataKit がメトリクスログを Guance DataWay クラスタにプッシュします。
  2. DataWay がデータを kodo サービスにプッシュして処理します。
  3. kodo が処理済みのデータを nsqd メッセージキューサービスにプッシュします。
  4. kodo-x が nsqd メッセージキューサービスにリクエストしてデータを消費します。
  5. kodo-x が消費したデータを対応するストレージエンジンにプッシュします。

データ欠落のトラブルシューティング手順

手順 1:ホストの時刻を確認する

以下の情報を確認してください。

  • Guanceクラスタのホスト時刻が現在時刻と一致していること
  • DataKit コレクタのホスト時刻が現在時刻と一致していること

次のコマンドで確認できます。

date

ホスト時刻が現在時刻と一致しない場合は、以下の方法で修正してください。

# ntpdate をインストール
yum install ntpdate -y

# ローカル時刻を同期
ntpdate time.windows.com

# ネットワークソースと同期
ntpdate cn.pool.ntp.org
sudo date -s "2022-01-01 10:30:00"

時刻を適宜修正してください。

手順 2:コレクタの確認

DataKit データ欠落のトラブルシューティング を参照してください。

手順 3:DataWay サービスのログを確認する

以下の内容を実行してください。

# コンテナにログイン
kubectl exec -ti -n  <Namespace> <dataway pod name> bash
# ログを確認
cd /usr/local/cloudcare/dataflux/dataway
# エラーログを検索
grep -Ei error log

手順 4:各サービスの実行状態を確認する

  • クラスタノードの状態が正常か確認する
kubectl get node
  • forethought-kodo 配下の全サービスの状態が正常か確認する
kubectl get pods -n forethought-kodo
  • nsqd サービスの状態が正常か確認する
kubectl get pods -n middleware | grep nsqd
  • ストレージエンジンが正常か確認する
kubectl get pods -n middleware

手順 5:kodo サービスのログを確認する

注意

kodo サービスのログを確認することで、Guanceがデータを正常にコンシューマキューにプッシュできているかを調査できます。

  • Namespace: forethought-kodo

  • Deployment: kodo

  • Log path: /logdata/log

kodo サービスが正常な場合は、以下の内容を実行してください。

# コンテナにログイン
kubectl exec -ti -n  forethought-kodo <kodo pod name> bash
# ログを確認
cd /logdata
# エラーログを検索
grep -Ei error log

kodo サービスが異常な場合、コンテナにログインできません。まず kodo のログ出力モードを変更し、その後コンテナログを確認してください。

  • kodo のログ出力モードを変更する
kubectl get configmap kodo -n forethought-kodo -o yaml | \
       sed "s/\/logdata\/log/stdout/g" | \
       kubectl apply -f -
  • kodo コンテナを再起動する
kubectl rollout restart -n forethought-kodo deploy kodo 
  • kodo コンテナのログを確認する
kubectl logs -f -n forethought-kodo <kodo pod name>

手順 6:kodo-x サービスのログを確認する

注意

kodo-x サービスのログを確認することで、Guanceがデータを正常に書き込めているか、ログの書き込みにレート制限がかかっていないか、書き込みが遅延していないかなどを調査できます。

  • Namespace: forethought-kodo
  • Deployment: kodo-x
  • Log path: /logdata/log

kodo-x サービスが正常な場合は、以下の内容を実行してください。

# コンテナにログイン
kubectl exec -ti -n  forethought-kodo <kodo-x pod name> bash
# ログを確認
cd /logdata
# エラーログを検索
grep -Ei error log

kodo サービスが異常な場合、コンテナにログインできません。まず kodo のログ出力モードを変更し、その後コンテナログを確認してください。

  • kodo のログ出力モードを変更する
kubectl get configmap kodo-x -n forethought-kodo -o yaml | \
       sed "s/\/logdata\/log/stdout/g" | \
       kubectl apply -f -
  • kodo コンテナを再起動する
kubectl rollout restart -n forethought-kodo deploy kodo-x
  • kodo コンテナのログを確認する
kubectl logs -f -n forethought-kodo <kodo-x pod name>

フィードバック

このページは役に立ちましたか?