分散トレース

サービスグラフでは、ディストリビューティッド(分散)トレーシングビューを使用して次のことができます。

  • サービス全体のパフォーマンスを分析します。

  • 選択したサービスとその相互依存サービス間の通信フローを視覚化します。

  • エラーを示しているサービスを特定し、誤ったサービスをトラブルシューティングします。

  • 選択したサービスとその相互依存サービス間のトランザクションの詳細を表示します。

前提条件

サービスのトレース情報を表示するには、次の操作を行う必要があります。

  • East-West トラフィックを送信する間、アプリケーションが次のトレースヘッダーを保持していることを確認します。

    Headers

  • 1.7.23 より前のCICビルドの場合、CPX NS_DISTRIBUTED_TRACING YAMLファイルをおよび値として更新します yes

    CPX YAML

  • 1.7.23 以降の CIC ビルドでは、ConfigMap を使用する必要があります。

    ConfigMaps を使用すると、Pod から設定を分離し、ワークロードを移植することができます。ConfigMaps を使用すると、ワークロード構成を簡単に変更および管理でき、構成データを Pod 仕様にハードコードする必要性を軽減できます。

    ConfigMapのサポートにより、NetScaler Ingress Controller ポッドを実行したまま構成を自動的に更新できます。更新後に Pod を再起動する必要はありません。詳細については、 Ingress コントローラーに対する ConfigMap のサポートを参照してください

    ConfigMap を使用すると、分散トレース、イベント、監査ログなどを有効または無効にできます。構成マップを使用するには、次の手順に従います。

    1. 必要なパラメータを使用して YAML ファイルを作成します。

      次の YAML ファイルの例では、分散トレースが有効になり、監査ログ、イベント、トランザクションなどのその他の変数が無効になっています。

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: cic-configmap
        namespace: default
      data:
        LOGLEVEL: 'debug'
        NS_PROTOCOL: 'http'
        NS_PORT: '80'
        NS_HTTP2_SERVER_SIDE: 'ON'
        NS_ANALYTICS_CONFIG: |
          distributed_tracing:
            enable: 'true'
            samplingrate: 100
          endpoint:
            server: <AgentIP> / <AppserverIP>
          timeseries:
            port: 5563
            metrics:
              enable: 'true'
              mode: 'avro'
            auditlogs:
              enable: 'false'
            events:
              enable: 'false'
          transactions:
            enable: 'false'
            port: 5557
      <!--NeedCopy-->
      

      0 から 100までSamplingrateの値を指定できます。NetScaler コンソールには、上記の数のトレーストランザクションが表示されます。

    2. 以下を使用して ConfigMap を展開します。

      kubectl create -f <configmap-yaml>.yaml

    3. CPX YAML ファイルを編集し、 envFromまたはargsを使用して次の引数を指定します。

      envFrom:
       - configMapRef:
           name: cic-configmap
      <!--NeedCopy-->
      

      または

      YAML

      ConfigMap の YAML 設定は CIC にデプロイされます。

    4. 任意の変数の値を変更する場合は、ConfigMap で値を編集します。この例では、他のすべての変数をfalseからtrueに変更しています。

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: cic-configmap
        namespace: default
      data:
        LOGLEVEL: 'debug'
        NS_PROTOCOL: 'http'
        NS_PORT: '80'
        NS_HTTP2_SERVER_SIDE: 'ON'
        NS_ANALYTICS_CONFIG: |
          distributed_tracing:
            enable: 'true'
            samplingrate: 100
          endpoint:
            server: <AgentIP> / <AppserverIP>
          timeseries:
            port: 5563
            metrics:
              enable: 'true'
              mode: 'avro'
            auditlogs:
              enable: 'true'
            events:
              enable: 'true'
          transactions:
            enable: 'true'
            port: 5557
        <!--NeedCopy-->
      
    5. 次のコマンドを使用して ConfigMap を再適用します。

      kubectl apply -f <yaml-file>.yaml

サービストレースの詳細の表示

サービスグラフで、サービスをクリックし、「 トレース情報」を選択します。

トレース情報

選択したサービスの「トレースの概要」ページが表示されます。

トレースの概要

トレースの概要には以下が表示されます

  • 提案と演算子を使用したトランザクションを検索できる拡張検索 (1)。詳細については、「 アドバンスサーチ」を参照してください。

  • 1 時間、12 時間、1 日、1 週間、1 ヶ月、カスタム時間 (2) などの期間を選択できる期間リスト。

  • 特定の期間の結果をドラッグして選択して表示できる「タイムラインの詳細」グラフ (3)。

  • 各指標からオプションを選択できるフィルターパネル (4)。

  • 選択したサービスのトランザクション詳細 (5)。

取引の詳細を表示

トランザクションをクリックしてドリルダウンすると、詳細情報が表示されます。選択したサービスについて、次のようなトランザクションの詳細を表示できます。

  • 開始日時

  • 終了時間

  • SSL メトリック

  • 相互に依存するサービスとの通信 (各サービスでのエラーと応答時間を含む)

次の例は、catalogue-store-serviceからのエラーを示しています。 詳細については、「トレースの詳細を表示」 をクリックしてください。

トレースの詳細

「トレースの詳細」ページが表示されます。

トランザクションをトレース

1 — トランザクションの開始時間、応答時間、合計サービス、合計スパンが表示されます。

2 — 相互依存サービスと通信した、選択したサービスの詳細を表示します。各トランザクションをクリックすると、詳細が表示されます。

3 — 各サービスのトランザクションの詳細を表示します。

例の画像によると、catalogue-store-serviceはエラーを示しています。catalogue-store-serviceのご利用可能な取引をクリックしてください。

クリックトランザクション

product-catalogue-servicecatalogue-store-serviceのトランザクションの詳細には、HTTP応答が500 と表示されています。これらの詳細により、管理者はエラーのあるサービスを分析し、product-catalogue-serviceを解決策としてトラブルシューティングを行うことができます。

フィルターパネルの各指標からオプションを選択して 、結果を絞り込むこともできます。たとえば、5xx トランザクションをすべて表示するには、[ レスポンスコード ] をクリックして [ 500] を選択します。

フィルターパネル

  • クライアント RTT: クライアントからパケットが送信されるまでの時間。

  • サーバーRTT: パケットがサーバーから送信されるまでの時間。

  • アプリ応答時間:アプリケーションの平均応答時間

  • データ転送時間:サービスとの間で送受信されるデータ転送のサイズと速度。

  • 場所:クライアントの場所

  • ブラウザ:クライアントが使用するブラウザータイプ。例: Chrome、Firefox。

  • クライアントOS: ブラウザからのユーザエージェントの詳細に基づくクライアントOS。

  • デバイス:ブラウザからのユーザーエージェントの詳細に基づくデバイス。例:タブレット、モバイル。

  • 要求タイプ:取引要求タイプ。例:GET。

  • 応答コード:サーバーから受信した応答コード。たとえば、501、404、200などです。

  • 応答コンテンツタイプ:トランザクションコンテンツタイプ。クライアント要求が text/html の場合、サーバーからの応答は text/html である必要があります。

  • SSL プロトコル:クライアントが使用する SSL プロトコルのバージョン。例:SSLv3。

  • SSL 暗号強度:高、中、低などの SSL 証明書のキーサイズに基づく暗号強度。

  • SSL キー強度:SSL 暗号強度は SSL 証明書のキーサイズから計算されます。キーの長さは、SSL アルゴリズムのセキュリティを定義します。例:2048

  • SSL フロントエンド失敗の理由: フロントエンド SSL ハンドシェイクのエラーメッセージ。例: SSL CLIENTAUTH FAILURE

分散トレース