この記事では、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 イノベーションを発表
数日前、licloud の香港 VPS がリリースされました。これは、100Mbps の帯域幅を年間...
モバイルインターネットの時代において、WeChatはさまざまな情報を入手するための主要なモバイルポー...
Avinash Kaushik のブログの最近の記事「顧客生涯価値の計算」では、Web サイト ユー...
みなさんこんにちは。私はMuzi Chengzhouです。以前、私はLi Jianzhong氏の記事...
BandwagonHost VPS はいかがでしょうか?破壊者USCA_8はどうですか? Bandw...
Baidu Newsで関連キーワードを検索したところ、Discuz!が最後に市場ブランドに露出されて...
Namecheapのブラックフライデーのプロモーション情報は次のとおりです。[1] .club、.w...
Raksmart は、米国での無制限トラフィック VPS、香港での無制限トラフィック VPS、日本で...
3月1日、Baiduは外部リンクを拒否するツールをリリースしました。青大根アルゴリズムに続いて、Ba...
みなさんこんにちは。私はMuzi Chengzhouです。 chinazのホームページで、Googl...
昨日は工場の電気がなかったので、今日は出勤に回ったので、昨日Niziが書いた記事は見ていません。昨日...
卒業シーズンが近づいており、当社は最近採用活動に忙しくしています。当社はさまざまな方法で採用活動を行...
vmiss vps は、オリジナルのロサンゼルス cn2 gia、香港 cn2、日本 iij、韓国 ...
1. 注意:CITIC銀行は200万元以上の住宅ローンを停止しました2017年の時点で、2018年は...
ジュニパーネットワークス MX シリーズ ルーターは、セグメント ルーティング トラフィック エンジ...