ホームページ > Java > &#&チュートリアル > Actuator、Prometheus、Grafana を使用して最新のアプリケーションの可観測性と監視を構築する

Actuator、Prometheus、Grafana を使用して最新のアプリケーションの可観測性と監視を構築する

Linda Hamilton
リリース: 2025-01-05 06:15:42
オリジナル
684 人が閲覧しました

今日の分散システムとマイクロサービスの世界では、アプリケーションが監視可能で監視可能であることを保証することは、コア機能を構築するのと同じくらい重要です。 NGINX ロード バランサーレート リミッターサーキット ブレーカーなどの重要な機能はすでに設定済みです。次のステップは 可観測性と監視.

このブログ投稿では、

Spring Boot ActuatorPrometheus、および Grafana をアプリケーションに追加して堅牢な可観測性を構築する方法を説明します。スタック。これにより、アプリケーションの状態を視覚化し、パフォーマンス指標を追跡し、問題を迅速かつ効率的にトラブルシューティングすることができます。


可観測性とは何ですか?

可観測性とは、システムが生成するデータに基づいてシステムの内部状態を理解する能力を指します。可観測性の 3 つの柱は次のとおりです:

  1. メトリクス: 定量化可能なデータポイント (リクエスト率、メモリ使用量、CPU 使用率など)。
  2. ログ: イベントの記録 (エラー、警告、ビジネス イベントなど)。
  3. トレース: 複数のサービスを通過するリクエストを追跡します。

メトリクスとログに焦点を当てることで、アプリケーションのパフォーマンスと信頼性を維持する強力なダッシュボードとアラートを構築できます。


アプリケーションにとって可観測性が重要である理由

現在のアプリケーション アーキテクチャにはすでに重要なコンポーネントが含まれています:

  • NGINX ロード バランサー: サーバー間でトラフィックを分散します。
  • レート リミッター: リクエストの数を制限することで過負荷を防ぎます。
  • サーキット ブレーカー: 障害が発生したサービスへの呼び出しを停止することで回復力を確保します。
しかし、これらのツールはパフォーマンスと信頼性を向上させますが、何かが失敗する

理由や、負荷の下でシステムがどのように動作するかについては教えてくれません。 ActuatorPrometheusGrafana などの可観測性ツールは次のことを行います。

    アプリケーションの健全性とパフォーマンスに関する
  • リアルタイム メトリクスを追跡します。
  • 傾向と潜在的なボトルネックを視覚化するのに役立ちます。
  • メトリクスが重大なしきい値を超えたときにアラートをトリガーします。

可観測性スタック

pom.xml ファイルに次の依存関係を追加します:


<dependency>
   <groupId>io.github.resilience4j</groupId>
   <artifactId>resilience4j-micrometer</artifactId>
   <version>2.2.0</version>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<dependency>
  <groupId>io.micrometer</groupId>
  <artifactId>micrometer-registry-prometheus</artifactId>
  <version>1.14.1</version>
</dependency>

ログイン後にコピー
ログイン後にコピー
application.properties の構成を更新します


resilience4j.circuitbreaker.metrics.enabled=true

management.health.circuitbreakers.enabled=true
management.endpoints.web.exposure.include=health,metrics,circuitbreakers,prometheus
management.endpoint.health.show-details=always
management.endpoint.health.access=unrestricted
management.endpoint.prometheus.access=unrestricted
management.prometheus.metrics.export.enabled=true
ログイン後にコピー
ログイン後にコピー
説明

management.endpoints.web.exposure.include=ヘルス、メトリクス、サーキットブレーカー、プロメテウス


この行はアクチュエーターからの URI を公開しているので、次のような URI を使用できます:

  • アクチュエーター/
  • アクチュエーター/健康状態、
  • アクチュエーター/メトリック、
  • アクチュエーター/サーキットブレーカー、
  • アクチュエーター/プロメテウス

docker でプロメテウスを使用する

docker-compose.yaml ファイルで、prometheus 用のサービスを作成します。

<dependency>
   <groupId>io.github.resilience4j</groupId>
   <artifactId>resilience4j-micrometer</artifactId>
   <version>2.2.0</version>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<dependency>
  <groupId>io.micrometer</groupId>
  <artifactId>micrometer-registry-prometheus</artifactId>
  <version>1.14.1</version>
</dependency>

ログイン後にコピー
ログイン後にコピー

プロメテウスの設定ファイル

プロジェクトのルートに prometheusand というフォルダーを作成し、その中に prometheus.yaml というファイルを作成します

resilience4j.circuitbreaker.metrics.enabled=true

management.health.circuitbreakers.enabled=true
management.endpoints.web.exposure.include=health,metrics,circuitbreakers,prometheus
management.endpoint.health.show-details=always
management.endpoint.health.access=unrestricted
management.endpoint.prometheus.access=unrestricted
management.prometheus.metrics.export.enabled=true
ログイン後にコピー
ログイン後にコピー

次に、実行すると:

prometheus:
    image: prom/prometheus:latest
    ports:
      - "9090:9090"
    networks:
      - app_network
    volumes:
      - ./prometheus/prometheus.yaml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus

ログイン後にコピー

prometheus コンテナが起動し、URI アクチュエータからのメトリクス/spring-boot-servers からのメトリクスを消費します。

http://localhost:9090/ にダッシュボードが表示されます。例:

Building Observability and Monitoring for Modern Applications with Actuator, Prometheus and Grafana

Prometheus のダッシュボード

しかし、これはクールではありません。いくつかのグラフを見たいので、Grafana を使用します。


グラファナを追加

別のサービスを使用して docker compose ファイルを更新します:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'spring-boot-app'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets:
          - 'spring-server-1:8080'
          - 'spring-server-2:8080'
        labels:
          environment: development
          application: spring-boot

ログイン後にコピー

http://localhost:3000 の grafana ダッシュボードにアクセスできるようになりました

最初に資格情報を尋ねられます。ユーザーとパスワードには「admin」と入力するだけです。

プロメテウスの構成

左上のメニューで、[接続] > [接続] に移動します。新しい接続を追加し、Prometheus

を検索します

接続 URL を次のように構成します:

Building Observability and Monitoring for Modern Applications with Actuator, Prometheus and Grafana

Grafana で Prometheus を構成する

「保存してテスト」ボタンをクリックします。すべて問題がなければ、ダッシュボードの選択を開始できます。

ダッシュボード

Grafana ダッシュボードに移動し、適切なダッシュボードを選択します。

このために、Spring Boot Resilience4j Circuit Breaker (3.x) を選択します

すべてが正常に動作すると、次のような内容が表示されます:

Building Observability and Monitoring for Modern Applications with Actuator, Prometheus and Grafana

サーキットブレーカーのグラフ

他のダッシュボードも自由に閲覧してください。


最後の言葉

ActuatorPrometheus、および Grafana をアプリケーションに統合することにより、高度に観察可能なシステムの構築に向けて大きな一歩を踏み出しました。メトリクス、ロギング、モニタリングを導入すると、次のことが可能になります。

  • アプリケーションとインフラストラクチャを完全に可視化します。
  • 問題を積極的に検出して解決します。
  • パフォーマンスと信頼性を最適化します。

これらのツールを導入することで、システムを効果的に監視するだけでなく、将来的に自信を持って拡張するための基盤を築くことができます。


?参照

  • Grafana ドキュメント
  • プロメテウスのドキュメント

?プロジェクトリポジトリ

  • Github 上のプロジェクト リポジトリ

?私に話して

  • リンクトイン
  • Github
  • ポートフォリオ

以上がActuator、Prometheus、Grafana を使用して最新のアプリケーションの可観測性と監視を構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート