Linkerd 2.10 の中国語マニュアルは継続的に改訂および更新されています。 https://linkerd.hacker-linner.com 分散トレースを実際に使用すると複雑になる可能性があるため、何が得られるか、どのように行われるかを大まかに説明するために、誤解のリストをまとめました。 このガイドでは、EmojiVoto の追跡の設定と有効化について説明します。 Linkerd で分散トレースを使用する最適な方法に関するアドバイスについては、最後まで読んでください。 分散トレースを使用するには、次のものが必要です。
emojivoto の場合、これらの手順をすべて完了すると、次のようなトポロジが作成されます。 前提条件
Linkerd-Jaeger拡張機能をインストールする分散トレースをセットアップするための最初のステップは、クラスターに Linkerd-Jaeger 拡張機能をインストールすることです。拡張機能は、コレクター、Jaeger バックエンド、および Jaeger インジェクターで構成されます。コレクターは、グリッドとアプリケーションから発行されたスパンを消費し、それらを Jaeger バックエンドに送信します。Jaeger バックエンドはそれらを保存し、それらを表示するためのダッシュボードを提供します。 Jaeger-injector は、スパンを発行するように Linkerd プロキシを構成する役割を担います。 Linkerd-Jaeger 拡張機能をインストールするには、次のコマンドを実行します。
次のコマンドを実行すると、Linkerd-Jaeger 拡張機能が正しくインストールされたことを確認できます。
Emojivotoをインストールするemojivoto をクラスターに追加し、Linkerd プロキシを使用して挿入します。
次のステップに進む前に、kubectl を使用して次のコマンドを実行し、すべてが稼働していることを確認します。
アプリケーションを変更するサービス メッシュのほとんどの機能とは異なり、分散トレースではアプリケーションのソースを変更する必要があります。トレースには、受信リクエストをアプリケーションに、送信リクエストを関連サービスに結び付ける何らかの方法が必要です。これを行うには、追跡用の一意の ID を含むいくつかのヘッダーが各リクエストに追加されます。 Linkerd は、b3 伝播形式を使用してこれらを結び付けます。 この情報を使用してリクエストを検出するように emojivoto を変更しました。このコミットでは、これがどのように行われるかを示します。ほとんどのプログラミング言語では、これを処理するためにクライアント ライブラリを追加するだけで済みます。 Emojivoto は OpenCensus クライアントを使用しますが、他のクライアントも使用できます。 emojivoto で追跡を有効にするには、次を実行します。
このコマンドは、アプリケーションがコンテキストを伝播してスパンを出力できるようにする環境変数を追加します。 イェーガーを探索vote-bot が各リクエストのトレースを開始すると、Jaeger にスパンが表示されるようになります。 UI に入るには、次を実行します。
ドロップダウン リストで任意のサービスを検索し、「トレースの検索」をクリックできます。投票ボットは始めるのに最適な方法です。 特定のトレースをクリックすると、すべての詳細が表示され、各エージェントの範囲を確認できます。 この出力には確かに多くの linkerd-proxy スパンが含まれています。内部的には、プロキシにはサーバー側とクライアント側があります。リクエストがプロキシを通過すると、サーバーによって受信され、クライアントによって送信されます。 2 つのメッシュ ポッド間で渡される単一のリクエストの場合、合計 4 つのスパンが存在します。リクエストがそのプロキシを通過すると、ソース側に 2 つ存在し、リモート プロキシがリクエストを受信すると、宛先側に 2 つ存在します。 さらに、エージェントはアプリケーション メタデータをトレース属性として追加するため、ユーザーは、以下に示すように、メトリック テーブル内の Jaeger アイコンをクリックして、linkerd-web ダッシュボードから関連するリソース トレースに直接ジャンプできます。 クリーニングクリーンアップするには、次のコマンドを実行して Linkerd-Jaeger 拡張機能と emojivoto をアンインストールします。
自分のイェーガーを持ってきてください既存の Jaeger インストールがある場合は、Linkerd-Jaeger 拡張機能に組み込まれている Jaeger インスタンスではなく、そのインスタンスにトレースを送信するように OpenCensus コレクターを設定できます。
OpenCensus の設定を手動で編集して、サポートされている任意のバックエンドにエクスポートすることもできます。完全なリストについては、OpenCensus のドキュメントを参照してください。 トラブルシューティングプロキシのスパンが表示されません Linkerd プロキシは b3 伝播形式を使用します。 Jaeger などの一部のクライアント ライブラリでは、デフォルトで異なる形式が使用されます。エージェントがトレースに参加するには、b3 形式を使用するようにクライアント ライブラリを構成する必要があります。 提案イングレスイングレスは、各トレースのルート スパンを作成し、そのトレースをサンプリングするかどうかを決定する役割を担うため、分散トレースの特に重要なコンポーネントです。イングレスがすべてのサンプリング決定を行うことで、トレース全体がサンプリングされるかサンプリングされないかが保証され、「部分的なトレース」の作成が回避されます。 分散トレース システムはすべて、受信したリクエストから送信したリクエストまでの現在のトレースに関するメタデータを伝播するサービスに依存しています。このメタデータはトレース コンテキストと呼ばれ、通常は 1 つ以上のリクエスト ヘッダーにエンコードされます。トレース コンテキスト ヘッダー形式にはさまざまなものがあり、エコシステムが最終的には W3C トレース コンテキストのようなオープン スタンダードに収束することを期待していますが、現時点では b3 形式のみを使用します。最も古くから広く使用されている形式の 1 つとして、特に Nginx などのポータルで最も広くサポートされています。 このリファレンス アーキテクチャには、トレースの 50% をサンプリングし、トレース データをコレクターに送信する (Zipkin プロトコルを使用) シンプルな Nginx 構成が含まれています。ここでは、Nginx の代わりに任意の Ingress コントローラーを使用できます。ただし、次の条件を満たす必要があります。
helm を使用して ingress-nginx をインストールした場合は、次のコマンドでトレースを設定できます。
クライアントライブラリサービスはトレース伝播ヘッダーを手動で伝播することもできますが、多くの場合、次の 3 つのことを実行するライブラリを使用する方がはるかに簡単です。
OpenCensus を使用してサービス内で設定することをお勧めします。
OpenCensus エージェント エクスポータは、gRPC API を介してトレース データを OpenCensus コレクターにエクスポートします。 OpenCensus を構成する方法の詳細は言語によって異なりますが、多くの一般的な言語のガイドがあります。サンプル アプリケーション Emojivoto を使用して、Go でのエンドツーエンドの例を確認することもできます。 OpenCensus プロジェクトはメンテナンス モードになっており、OpenTelemetry の一部となることにお気づきかもしれません。残念ながら、OpenTelemetry はまだ本番環境での使用には対応していないため、現在のところ OpenCensus が推奨されています。 他にも多くのトレース クライアント ライブラリが利用可能です。 b3 伝播形式を使用していること、およびクライアント ライブラリがコレクターが受信するように構成されている形式でスパンをエクスポートできることを確認してください。 コレクター: OpenCensusOpenCensus コレクターは、OpenCensus エージェント エクスポーターからトレース データを受信し、データを Jaeger に送信する前に変換およびフィルタリングする場合があります。 OpenCensus エクスポーターを OpenCensus コレクターに送信すると、柔軟性が大幅に向上します。アプリケーションを中断することなく、OpenCensus でサポートされている任意のバックエンドに切り替えることができます。 バックエンド: JaegerJaeger は最も広く使用されているトレース バックエンドの 1 つですが、それには十分な理由があります。それは、使いやすく、トレースを視覚化するのが非常に優れているからです。ただし、代わりに OpenCensus でサポートされている任意のバックエンドを使用できます。 リンカードアプリケーションに Linkerd が挿入されている場合、Linkerd プロキシはトレースに参加し、トレース データを OpenCensus コレクターに送信します。これにより、トレース データが充実し、リクエストがプロキシ内およびネットワーク上で費やされる時間を正確に把握できるようになります。 Linkerd は b3 伝播形式を使用するトレースにのみアクティブに参加できますが、不明なリクエスト ヘッダーは常に透過的に転送されるため、他の伝播形式を使用するトレースに干渉することはありません。 |
<<: Spark Technologyは「2020年第4位のICユニコーン」リストに掲載されました
>>: 従来型からクラウドへ: エンタープライズ近代化の 3 つのフェーズ
誰もが、一夜にして成し遂げられることはなく、完璧なものなど存在しないことを知っています。時代の変化と...
インターネット業界の発展に伴い、さまざまな業界のウェブサイトはさらに細分化されてきました。中古品リサ...
以前、張立はA5「ウェブマスター記録」に参加し、タオバオの運営について語った際、タオバオの売り手のブ...
データ分析という言葉は、非常に流行っています。しかし、近年騒がれているさまざまな概念と同様に、落ち着...
SEO プロジェクトの場合、成功または失敗は主にキーワードの選択が正しいかどうかによって決まります。...
カナダのサーバー(ネイティブ IP)を購入したいですか?苦情防止サーバー(著作権 DMCA を無視)...
ここで説明する BOM は狭義の BOM であり、ERP で生産に使用される BOM とは大きく異な...
ほとんどの企業は、ハイブリッド ワーキング モデルをすでに実装しているか、将来的に実装する予定です。...
Rectified の 11 月の大きなプロモーションが始まりました: Sharktech のロサン...
2023年11月、Volcano Engineは北京、上海、深センでVolcano Engineパブ...
みなさんこんにちは。昨日、SEO 職場体験シーズン 1: 初心者という記事を書きました。今日も引き続...
最新のデバイス、アプリケーション、サービスのほとんどは、クラウド コンピューティング リソース (デ...
3月28日、Youmi.comの創設者である王立文氏は、2012年の第1回中国リーダーシップ年次大会...
ご存知のとおり、Baidu 検索エンジンの動作プロセスは非常に複雑です。長年にわたり、Baidu 検...
キーワード最適化は、常にウェブサイト最適化の焦点でした。ウェブサイトの設立から立ち上げまで、キーワー...