Alibaba Cloud Container Service for Kubernetes を使用すると、Istio と Log Service を連携できます。 このドキュメントでは、公式の例を使用して、Alibaba Cloud Log Service に基づく分散トレーシングシステムと Istio を連携する方法について説明します。

前提条件

OpenTracing の概要

異なる分散トレーシングシステム間の API の非互換性の問題に対処するため、OpenTracing が誕生しました。 OpenTracing は、軽量の標準化レイヤーで、アプリケーション/クラスライブラリと、トレーシングまたはログ解析プログラムの間に配置されます。 また、Cloud Native Computing Foundation (CNCF) に参加しており、グローバル分散トレーシングシステムの統一コンセプトとデータ標準を提供しています。 プラットフォームとベンダーに依存しない API を備えています。 OpenTracing を使用すると、開発者はトレーシングシステムを簡単に追加または置き換えることができます。

Jaeger は、CNCF によってリリースされたオープンソースの分散トレーシングシステムで、OpenTracing API と互換性があります。

Alibaba Cloud Log Service と分散トレーシングシステム Jaeger

Log Service (略して LOG 。以前は SLS ) は、リアルタイムデータをワンストップで提供するサービスです。 これは、ビッグデータのシナリオで Alibaba Group によって広く使用されています。 Log service は、向上された処理能力で、大量のログデータを収集、消費、配信、照会、および分析するのに役立ちます。

Jaeger は、マイクロサービスシナリオ用に Uber がリリースしたオープンソースの分散トレーシングシステムです。 複数のサーバーの呼び出しプロセスを分析し、グラフを使用してサービス呼び出しトラックを表示するために使用されます。 パフォーマンスを診断し、システム障害を分析するための強力なツールです。

Alibaba Cloud Log Service 上の Jaeger は、Jaeger 上で開発された分散トレーシングシステムです。 このシステムを使用すると、収集したトレーシングデータを Alibaba Cloud Log Service に永久に保存し、Jaeger のネイティブインターフェイスを使用してデータを照会したり、提示したりすることができます。
コンポーネント 説明
Jaeger client Jaeger client は、異なる言語の OpenTracing 標準に準拠した SDK を提供します。 アプリケーションは、API を使用してクライアントにデータを書き込みます。 Client Library は、アプリケーションで指定されたサンプリングポリシーに従ってトレース情報を Jaeger agent に送信します。 トレーシングデータは、Thrift によってシリアル化され、UDP を使用して送信されます。
Jaeger agent Jaeger agent は、UDP を通じて送信されたスパンをリッスンし、Jaeger collector にバッチでデータを送信するネットワークデーモンです。 Jaeger agent は、すべてのホストにデプロイされるインフラストラクチャコンポーネントとして設計されています。 Jaeger agent は、Jaeger client と Jaeger collector を切り離し、コレクターをクライアントから見えないようにします。 その後、コレクターはクライアントによってルーティングまたは検出されなくなります。
Jaeger collector Jaeger collector は、Jaeger agent からトレースを受信し、そのトレースをバックエンドストレージシステムに書き込みます。 バックエンドストレージは、プラグ可能なコンポーネントです。 Alibaba Cloud Log Service の Jaeger は、Alibaba Cloud Log Service に対応しています。
Alibaba Cloud Log Service Jaeger collector は、受信したスパンを Log Service に永続的に保存します。 クエリは Log Service からデータを取得します。
Query & UI クエリは、クエリリクエストを受信し、バックエンドストレージシステムからトレースを取得し、トレースを表示する UI をホストするサービスです。

手順 1: Web インターフェイスをクリックするだけで Istio をデプロイする

  1. Container Service コンソール にログインします。
  2. 左側のナビゲーションウィンドウで、[クラスター] を選択し、次にクラスターを選択します。[詳細] > [Istio のデプロイ] をクリックします。
    この例では、Log Service (SLS) と Jaeger を有効にする必要があります。 詳細については、「 Istio を Kubernetes クラスターにデプロイする」をご参照ください。 この例では、Istio V1.0 を使用します。
  3. Istio デプロイページで、[Log Service (SLS) と Jaeger] を選択します。

    Container Service for Kubernetes は、Log Service と連携されています。 分散トレーシングデータは、Log Service の Logstore に保存されます。

    Log Service パラメーターの説明は次のとおりです。

    名前 パラメーター 説明
    エンドポイント (Endpoint) storage.aliyun_sls.endpoint プロジェクトが存在するエンドポイントを指定して、スパンを格納します。
    プロジェクト (Project) storage.aliyun_sls.project スパンを格納するプロジェクトを指定します。 Project 名は 3 ~ 63 バイトの文字列でなければならず、小文字、数字、およびハイフン (-) のみ使用できます。 また、名前は小文字または数字で始まり終わる必要があります。
    Logstore storage.aliyun_sls.logstore スパンを格納する Logstore を指定します。 Logstore 名は、3 ~ 63 バイトの文字列でなければならず、小文字、数字、ハイフン (-)、およびアンダースコア (_) を使用できます。 名前は、小文字または数字で始まり終わる必要があります。 Logstore の名前は、所属するプロジェクトで一意でなければなりません。
    AccessKeyID storage.aliyun_sls.accesskey.id ユーザー Access Key ID を指定します。
    AccessKeySecret storage.aliyun_sls.accesskey.secret ユーザー Access Key Secret を指定します。
    存在しないプロジェクトを指定すると、新しいプロジェクトが自動的に作成され、初期化されます。
  4. [Istio のデプロイ] をクリックします。 数分後、 Alibaba Cloud Log Service と連携された Istio が作成されます。
  5. 左側のナビゲーションウィンドウで、[アプリケーション] > [サービス] を選択します。連携された Log Service を含む Istio サービスが右側に表示されます。

手順 2: Alibaba Cloud Log Service で Jaeger を表示する

  1. Container Service コンソール にログインします。
  2. 左側のナビゲーションウィンドウで、[アプリケーション] > [サービス] をクリックし、クラスターと istio-system 名前空間をクリックし、tracing-on-sls-query サービスの外部エンドポイントをクリックします。
  3. 左側で、[サービス] ドロップダウンリストからサービスを選択し、他のパラメーターを設定して、[Find Traces] をクリックします。 右上隅に表示される時間と期間の散布図には、結果が表示され、ドリルダウン機能がサポートされています。
    この例では、Bookinfo サンプルアプリケーションを使用して、productpage サービスの呼び出しを表示します。
  4. トレース結果を、さまざまな方法で表示する複数のビューから選択できます。 たとえば、トレーシング期間内のヒストグラムを選択したり、トレーシングプロセスのサービス期間を選択したりできます。

手順 3: Log Service の表示

  1. Log Service コンソール にログインします。
  2. プロジェクトを選択し、[プロジェクト名] をクリックします。
  3. Logstore の右側で、[検索] をクリックします。
  4. ログクエリの時間の範囲を選択し、[検索と分析] をクリックします。

    Log Service を使用すると、クエリステートメントや分析ステートメント、およびその他の拡張機能を使用して、クエリを最適化できます。 たとえば、分析グラフを使用できます。

    以下は統計グラフです。

まとめ

Alibaba Cloud Container Service for Kubernetes では、Istio とLog Service を連携することができます。 このドキュメントでは、Alibaba Cloud Log Service に基づく分散トレーシングシステムと Istio を連携する方法について、公式の例を使用しています。

Alibaba Cloud Container Service for Kubernetes を使用して、マイクロサービスの オープン管理プラットフォームである Istio を迅速に構築し、 現在のプロジェクトで Istio をマイクロサービスの開発に連携させることを推奨します。