この記事では、Grafana、Prometheus、Loki、Tempo、OpenTelemetry を使用して、Kubernetes で可観測性プラットフォームを構築します。操作パネルとして Grafana を使用し、データソースとして Prometheus、Loki、Tempo を使用し、それぞれインジケーター、ログ、追跡データを取得します。また、Exemplars を使用して trace_id を Java メトリックに関連付け、OpenTelemetry を使用してアプリケーションをインストルメント化します。 始める前に、これらのオープンソース ツールについて簡単に紹介しましょう。
バックエンドアプリケーションの準備この例では、Java Spring Boot プロジェクトを例として使用します。 まず、start.spring.io を使用して Java Spring Boot プロジェクトを作成します。これにより、Java プロジェクトをすばやく作成し、プロジェクトに静止画やその他の構成を追加できるようになります。 で:
構成が完了して生成されたら、圧縮されたパッケージをダウンロードして IDE で開くことができます。 まず build.gradle を設定して、すべての依存関係が正しいことを確認しましょう。 プラグイン{ 次に、/fail と /success の 2 つのエンドポイントを持つコントローラー クラス Controller.java を作成します。ファイルは ${project}/src/main/java/com/staz/observability/ に配置する必要があります。 パッケージ com.staz.observability; メトリックを trace_id に関連付けるには、${project}/src/main/java/com/staz/observability/ パスの下に共通の構成クラス PrometheusExemplarConfiguration.java を作成する必要があります。 パッケージ com.staz.observability; 最後に、${project}/src/main/resources/ディレクトリにある構成ファイル application.yml を編集します。 # Prometheusを含むアクチュエータエンドポイントを有効にする プロジェクトをローカルで実行するには、OpenTelemetry Agent をダウンロードする必要があります。このプロジェクトで使用されるバージョンは 1.12.1 です。 準備が完了したら、ローカルでテストしてみましょう。 まず、gradle build -x test を使用してプロジェクトをコンパイルします。 次に、次のコマンドで起動します。 java -javaagent:opentelemetry-javaagent.jar -Dspring.config.locatinotallow=src/main/resources/application.yml -jar build/libs/observability-0.0.1-SNAPSHOT.jar 次に、htttp://localhost:8080/fail と htttp://localhost:8080/success を使用してアクセスをテストできます。 次に、localhost:8080/actuator/prometheus を使用して、Prometheus インジケーターが有効かどうかを確認します。 最後に、metrice と trace_id の関連付けを確認します。 curl -H 'Accept: application/openmetrics-text;バージョン 1.0.0; charset=utf-8' http://localhost:8080/actuator/prometheus | grep トレースID Spring Boot アプリケーションの準備ができました。次に、監視ツールをインストールする必要があります。その前に、ローカルに K3s クラスターを作成し、すべてのソフトウェアをそこにデプロイします。 コンテナ化されたアプリケーションまず、プロジェクトのルート ディレクトリに次の内容の Dockerfile を作成します。 # OpenTelemetryAgent をダウンロード 次のコマンドを使用してビルドおよびテストします。 次のコマンドを実行して、docker build を実行します。 コンテナが起動したら、http://localhost:8080/success を使用して正常に使用できるかどうかを確認します。 単一ノードクラスタの作成まず、マルチパスを使用して Ubuntu インスタンスを作成します。 $ マルチパス起動 --name デモ --mem 4G --disk 20G 次にインスタンスにログインします。 $ マルチパスシェルデモ sudo su コマンドを使用して、Ubuntu インスタンスに正しく入力したかどうかを確認できます。 次に、次のコマンドで K3s をインストールします。 https://get.k3s.io を実行します。シュ - クラスターが作成されたら、環境変数に KUBECONFIG を追加します。 $ エクスポート KUBECONFIG=/etc/rancher/k3s/k3s.yaml クラスターが正常に動作しているかどうかを確認します。 $ kubectl クラスター情報 次に、後でアプリケーション ソフトウェアをインストールするために使用する Helm をインストールします。 $ スナップインストールヘルム --classic K3s の KUBECONFIG を ~/.kube/config ディレクトリにコピーします。 $ kubectl config ビュー --raw > ~/.kube/config 最後に、Helm が正しく動作していることを確認します。 $ ヘルム 可観測性コンポーネントをデプロイするこの段階では、Helm を使用して Prometheus、Promtail、Loki、Tempo、Grafana をデプロイし、最後にアプリケーションをデプロイして検証します。
まず、リポジトリから必要なマニフェストをクローンします。 $ git clone https://github.com/stazdx/otel-springboot-grafana-tools.git 次に、Helm リポジトリを追加します。 $ helm リポジトリ追加 grafana https://grafana.github.io/helm-charts 最後に、名前空間を作成し、すべてのアプリケーションをこの名前空間にデプロイします。 $ kubectl ns オブザーバビリティを作成します Promtailを展開する次のコマンドを使用してデプロイします。 $ cd プロンプト Promtail が指している Loki アドレスに注意してください。 Lokiを展開するデプロイメントコマンドは次のとおりです。 $ helm アップグレード --install loki grafana/loki-distributed -n 観測可能性 loki-loki-distributed-gateway サービスは非常に重要です。 Promtail はこれにデータを送信し、Grafana はそれを介してデータを取得します。 テンポを展開するまず、Tempo マニフェストが配置されているディレクトリに移動します。 $ cd ../テンポ Tempo をインストールする前に、まず minio をインストールする必要があります。コマンドは次のとおりです。 $ kubectl を適用 -f minio.yaml
次に、次のコマンドで Tempo をデプロイします。 $ helm アップグレード --install tempo grafana/tempo-distributed -n observability -f tempo.yaml
PrometheusとGrafanaをデプロイするPrometheus と Grafana は、公式 Web サイトのリポジトリを使用して直接デプロイされます。 まず、Helm リポジトリを追加します。 $ helm リポジトリに prometheus-community を追加します https://prometheus-community.github.io/helm-charts 次に、リポジトリ マニフェストを使用してデプロイします。 $ cd ../prometheus-grafana デプロイメントの確認Helm コマンドを使用して、デプロイされたすべてのアプリケーションを表示します。 $ helm ls -n 可観測性 次に、kubectl を使用して、アプリケーションが正常に起動されたかどうかを確認します。 $ kubectl get po -n 可観測性 サービスが正常かどうかを確認します。 $ kubectl get svc -n 可観測性 すべてのアプリケーションが正常にデプロイされていることがわかります。 バックエンドアプリケーションをデプロイするデプロイするには、ウェアハウス ディレクトリ リストに移動するだけです。 $ cd ../springboot-app Prometheus がインジケーターを正常にクロールできるようにするには、次の 注釈: もう 1 つの重要な構成は、次の OpenTelemetry 構成です。 環境: 最後に、Spring Boot を使用した Grafana ダッシュボードの構成マップがあり、これにより、リクエストのレイテンシなどのメトリックを通じて Exemplar と Tempo の相関関係を確認できます。 構成がチェックされ、正しいことが確認されたら、デプロイできます。 $ kubectl apply -f springboot-app.yaml アプリケーションが正常にデプロイされているかどうかを確認します。 $ kubectl get deploy,svc,cm -l app=springboot-app インターフェーステストまず、/fail インターフェースをテストします: http://{external-ip}:8080/fail。 次に、/success インターフェースをテストします: http://{external-ip}:8080/success。 最後に、/actuator/prometheus インターフェースをテストします: http://{external-ip}:8081/actuator/prometheus。 すべてのインターフェースが正常に戻ったことがわかります。 Grafana テスト以上で全ての設定が完了しました。次に、Grafanaで正常に使用できるかを確認します。 まず、Grafana のアクセス アドレスを取得します。 $ kubectl get svc -n 可観測性 ブラウザにアドレス http://{external-ip}:32656 を入力します。 次に、データ ソースを追加します。 Prometheus、Loki、Tempo のデータ ソースを追加します。 このうち、Prometheus の構成は次のとおりです。
Loki の構成は次のとおりです。
テンポは次のように構成されます。
試してみるアプリケーション ログは Explore から表示できます。 Loki データ ソースを選択します。 Loki を使用すると、監視ログをラベル別にフィルタリングできます。 ログからトレース情報を確認できます。 次に、Grafana ダッシュボードを見てみましょう。 私たちが独自に作成したパネルである Spring Boot Demo を選択します。 アプリケーションのリクエストのレイテンシと、Exemplar によって生成されたスターを確認できます。 マウスをその上に置くと、それがどのように trace_id に関連付けられているかがわかり、クリックすると Tempo にリダイレクトされます。 生成されたトレースを表示でき、ログも表示できます。これは Loki にも関連しているため、クリックすると特定の情報が表示されます。 画面は分割されていますが、特定のログを見ることができます。 やっとメトリック、ログ、トレース間の可観測性の相関関係を有効にしました。これにより、ボトルネックを特定し、アプリケーション メトリックの動作を確認し、特定のトレースとログを取得できるため、マイクロサービスのトラブルシューティング プロセスに役立ちます。 |
<<: クラウド ネイティブはビッグ データ アプリケーションの管理においてどのような役割を果たすのでしょうか?
>>: VMware、自動化を推進し、IT の近代化を加速する Anywhere Workspace イノベーションを発表
Shuhost(ShuMai Technology)は11月25日より、香港のデータセンターで多数の...
drserver.net のストレージ VPS ブランドである XenS の「言葉にできない」時代は...
2014年、BATが地元の生活の場に参入すると、ほとんど忘れ去られていた共同購入業界が突如として熱を...
ご存知のとおり、企業内のすべての部門と役職は、売上を達成し利益を上げるために設立され、機能します。そ...
導入通常、ユーザーインタビューを通じてユーザーのニーズを把握することができます。実際、デザイナーはユ...
5月6日のWebmaster Network (www.admin5.com)によると、Baidu ...
SEO は、ランキングを上げるために多数の外部リンクを使用する従来の方法から、ウェブサイトの総合的な...
O2Oは間違いなく中国の電子商取引市場におけるダークホースであり、近年の急速な拡大と成長は中国のO2...
パブリック クラウドに多額の投資をする企業が増えており、AWS パブリック クラウドとの差を縮めるた...
最近、会社のWeiboマーケティングとメールマーケティングを担当しているので、Weiboマーケティン...
北京時間4月6日早朝、海外メディアtorrentfreakは「PUBGが競争相手を締め出すため著作権...
[51CTO.comよりオリジナル記事] 世界経済フォーラムの最新レポートによると、企業のデジタルト...
この記事では、レンタカー プラットフォームである EasiestCarRental の完全なユーザー...
2019年3月27日、工業情報化部弁務局長の傅静波氏、情報ソフトウェア部副部長の董大建氏は江蘇省工業...
少し前に、百度は諾米団への戦略的投資を発表しました。現在までに、百度はまたしても大型取引を成し遂げま...