今日の分散システムとマイクロサービスの世界では、アプリケーションが監視可能で監視可能であることを保証することは、コア機能を構築するのと同じくらい重要です。 NGINX ロード バランサー、レート リミッター、サーキット ブレーカーなどの重要な機能はすでに設定済みです。次のステップは 可観測性と監視.
このブログ投稿では、Spring Boot Actuator、Prometheus、および Grafana をアプリケーションに追加して堅牢な可観測性を構築する方法を説明します。スタック。これにより、アプリケーションの状態を視覚化し、パフォーマンス指標を追跡し、問題を迅速かつ効率的にトラブルシューティングすることができます。
可観測性とは何ですか?
可観測性とは、システムが生成するデータに基づいてシステムの内部状態を理解する能力を指します。可観測性の 3 つの柱は次のとおりです:
- メトリクス: 定量化可能なデータポイント (リクエスト率、メモリ使用量、CPU 使用率など)。
- ログ: イベントの記録 (エラー、警告、ビジネス イベントなど)。
- トレース: 複数のサービスを通過するリクエストを追跡します。
メトリクスとログに焦点を当てることで、アプリケーションのパフォーマンスと信頼性を維持する強力なダッシュボードとアラートを構築できます。
アプリケーションにとって可観測性が重要である理由
現在のアプリケーション アーキテクチャにはすでに重要なコンポーネントが含まれています:
- NGINX ロード バランサー: サーバー間でトラフィックを分散します。
- レート リミッター: リクエストの数を制限することで過負荷を防ぎます。
- サーキット ブレーカー: 障害が発生したサービスへの呼び出しを停止することで回復力を確保します。
理由や、負荷の下でシステムがどのように動作するかについては教えてくれません。 Actuator、Prometheus、Grafana などの可観測性ツールは次のことを行います。
- アプリケーションの健全性とパフォーマンスに関する
- リアルタイム メトリクスを追跡します。 傾向と潜在的なボトルネックを視覚化するのに役立ちます。
- メトリクスが重大なしきい値を超えたときにアラートをトリガーします。
可観測性スタック
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/ にダッシュボードが表示されます。例:
しかし、これはクールではありません。いくつかのグラフを見たいので、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 を次のように構成します:
「保存してテスト」ボタンをクリックします。すべて問題がなければ、ダッシュボードの選択を開始できます。
ダッシュボード
Grafana ダッシュボードに移動し、適切なダッシュボードを選択します。
このために、Spring Boot Resilience4j Circuit Breaker (3.x) を選択します
すべてが正常に動作すると、次のような内容が表示されます:
他のダッシュボードも自由に閲覧してください。
最後の言葉
Actuator、Prometheus、および Grafana をアプリケーションに統合することにより、高度に観察可能なシステムの構築に向けて大きな一歩を踏み出しました。メトリクス、ロギング、モニタリングを導入すると、次のことが可能になります。
- アプリケーションとインフラストラクチャを完全に可視化します。
- 問題を積極的に検出して解決します。
- パフォーマンスと信頼性を最適化します。
これらのツールを導入することで、システムを効果的に監視するだけでなく、将来的に自信を持って拡張するための基盤を築くことができます。
?参照
- Grafana ドキュメント
- プロメテウスのドキュメント
?プロジェクトリポジトリ
- Github 上のプロジェクト リポジトリ
?私に話して
- リンクトイン
- Github
- ポートフォリオ
以上がActuator、Prometheus、Grafana を使用して最新のアプリケーションの可観測性と監視を構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Javaは、プラットフォームの独立性により、エンタープライズレベルのアプリケーションで広く使用されています。 1)プラットフォームの独立性は、Java Virtual Machine(JVM)を介して実装されているため、Javaをサポートする任意のプラットフォームでコードを実行できます。 2)クロスプラットフォームの展開と開発プロセスを簡素化し、柔軟性とスケーラビリティを高めます。 3)ただし、パフォーマンスの違いとサードパーティライブラリの互換性に注意を払い、純粋なJavaコードやクロスプラットフォームテストの使用などのベストプラクティスを採用する必要があります。

javaplaysasificanificantduetduetoitsplatformindepence.1)itallowscodetobewrittendunonvariousdevices.2)java'secosystemprovidesutionforiot.3)そのセキュリティフィートルセンハンス系

TheSolution to HandlefilepathsaCrosswindossandlinuxinjavaistousepaths.get()fromthejava.nio.filepackage.1)usesystem.getProperty( "user.dir")およびhearterativepathtoconstructurctthefilepath.2)

java'splatformentepenceissificAntiveSifcuseDeverowsDevelowSowRitecodeOdeonceantoniTONAnyPlatformwsajvm.これは「writeonce、runanywhere」(wora)adportoffers:1)クロスプラットフォームの複雑性、deploymentacrossdiferentososwithusisues; 2)re

Javaは、クロスサーバーWebアプリケーションの開発に適しています。 1)Javaの「Write and、Run Averywhere」哲学は、JVMをサポートするあらゆるプラットフォームでコードを実行します。 2)Javaには、開発プロセスを簡素化するために、SpringやHibernateなどのツールを含む豊富なエコシステムがあります。 3)Javaは、パフォーマンスとセキュリティにおいて優れたパフォーマンスを発揮し、効率的なメモリ管理と強力なセキュリティ保証を提供します。

JVMは、バイトコード解釈、プラットフォームに依存しないAPI、動的クラスの負荷を介してJavaのWORA機能を実装します。 2。標準API抽象オペレーティングシステムの違い。 3.クラスは、実行時に動的にロードされ、一貫性を確保します。

Javaの最新バージョンは、JVMの最適化、標準的なライブラリの改善、サードパーティライブラリサポートを通じて、プラットフォーム固有の問題を効果的に解決します。 1)Java11のZGCなどのJVM最適化により、ガベージコレクションのパフォーマンスが向上します。 2)Java9のモジュールシステムなどの標準的なライブラリの改善は、プラットフォーム関連の問題を削減します。 3)サードパーティライブラリは、OpenCVなどのプラットフォーム最適化バージョンを提供します。

JVMのバイトコード検証プロセスには、4つの重要な手順が含まれます。1)クラスファイル形式が仕様に準拠しているかどうかを確認し、2)バイトコード命令の有効性と正確性を確認し、3)データフロー分析を実行してタイプの安全性を確保し、検証の完全性とパフォーマンスのバランスをとる。これらの手順を通じて、JVMは、安全で正しいバイトコードのみが実行されることを保証し、それによりプログラムの完全性とセキュリティを保護します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

SublimeText3 中国語版
中国語版、とても使いやすい

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません
