Spring Boot Actutor、Jolokia、Grafanaを使用して、準リアルタイム監視を実現します.
3308 ワード
最近は監視カメラの仕事をしていますので、いろいろな経験を共有しました.この中にSpring Bootに基づく監視プログラムをまとめた文章があります.翻訳してみました.皆さんの役に立つことを願っています.
Near real-time monitong charts with Spring Boot Actutor、Jolokia and Grafana
Spring Boot Actuatorは
クラスター化された弾性環境において、アプリケーションのノードは成長し、拡張することができるので、非常に多くのアプリケーション・インスタンスからなる.孤立したノードの監視は、労力であり、実際の効果はないかもしれない.したがって、時間系列に基づくデータ重合ツールを使用するとより良い効果が得られる.
本論文の目標はツールと構成だけで実現できる解決策を見つけることで、Spring Boot Metricsに対して時間系列に基づく監視を実現することである.
NewRelicのように、ApDynamicsやDataDogなどのAPMシステムは、JVMとバイトコードツールを使って自分の指標、分析ツール、および関連する事務を生成することができます.
NewRelicは1分間の時間ウィンドウ内で発見され、検出されたトランザクションです.
Spring Boot Admin with metrics from Actutor:a snapshot of metrics data of a given aplication node
Spring Boot Admin with JMX and MBeans read data of a give aplication node
JConsolie old-school JMX Metrics of a given aplication node
Visual VM JMX Metrics of a give aplication node
引き続き前進して、これらの問題を解決することができる近代的な運送手段を試しました. Prometheus:SoundCloudによって作成され、一連の監視データを記憶し、きれいなアイコンを表示します.Prometheus GaugsとActutor Metricsは完全に互換性がないので、人々はデータ変換器を書いた.JMXデータを収集するためにPrometheusを配置することもできます. Sensu:NagiosとZabbixの近代的な代替品として、Spring Bootに直接接続できるプラグインがありますが、この倉庫は最近あまり更新されていませんので、あきらめます. Stots D:Spring Bootには、カスタム導出データについてStatsDへの記事があります.しかし、Spring BootアプリケーションのためにStatsDをインストールする以外に、いくつかの保存を実現して働かなければなりません. Graphee:You got to be a hero to install and Graphhite running.If You get there,you can configre it along Stots D to get metrics working in a chart. OpenTSDB:Spring BootにはOpenTSBDに接続する文章があります.しかし、このような方法はStatsDと似ています.カスタムコードを実現して維持して作業してください.また、OpenTSDBは開梱用の図形可視化ツールがありません. JMXTrans:データを抽出し、他の監視ツールに送信することができます.また、具体的な実装が必要です. Ganglia:JVM上のツールに基づいて、すべてのActutorリソースを記録します.前に言ったAPMと同じ問題があります. 研究の結果、より良い解決策を発見しました.InfluxDBとTelegrafを通じて実現しました.ゼロコードは正しい配置だけでいいです. Jolokia:Spring Bootは、Jolokiaを使用してHTTPからexport JMXデータを導出することを承認しています.プロジェクトパスに依存項目を追加するだけで、すべては開梱して使います.追加の実装は必要ありません. Telegraf:Telegrafは、Jolokiaを統合することによってJMXデータの収集を統合することをサポートしています.事前に作成した入力プラグインがあります.開梱して使うものです.追加の実装は必要ありません.いくつかの設定をすればいいです. InfluxDB:InfluxDBは出力プラグインによってTelegrafから指標データを受信します.これは開梱用で、追加の実現は必要ありません. Grafana:GrafanaはInfluxDBを接続してデータソースとしてアイコンをレンダリングする.これは開梱用で、追加の実装は必要ありません. 簡単に言えば、これらのものを配置するのはとても簡単です.
Spring Boot Actutor Raw Metrics
Metrics sent by Telegraf to InfluxDB,colleced by Jolokia and JMX over HTTP
Grafana InfluxDB data source configration
Grafana Metric chart query and configration:gaugs of an API
Near real-time monitong charts with Spring Boot Actutor、Jolokia and Grafana
Spring Boot Actuatorは
/metrics
エンドポイントを通して、開梱すなわちアプリケーションの性能指標と応答統計に非常に友好的な監視方式を提供しています.クラスター化された弾性環境において、アプリケーションのノードは成長し、拡張することができるので、非常に多くのアプリケーション・インスタンスからなる.孤立したノードの監視は、労力であり、実際の効果はないかもしれない.したがって、時間系列に基づくデータ重合ツールを使用するとより良い効果が得られる.
本論文の目標はツールと構成だけで実現できる解決策を見つけることで、Spring Boot Metricsに対して時間系列に基づく監視を実現することである.
NewRelicのように、ApDynamicsやDataDogなどのAPMシステムは、JVMとバイトコードツールを使って自分の指標、分析ツール、および関連する事務を生成することができます.
@Timed
の注釈方法を使用しても良い.しかし、これらの方法はすべてのSpring Boot Actuartライブラリから提供される利用可能なリソースを無視します.また、これらの方法を使うと、データの保持に関する問題がもう一つあります.短い時間のウィンドウ内の監視は比較的曖昧です.NewRelicは1分間の時間ウィンドウ内で発見され、検出されたトランザクションです.
spring-boot-admin
は、Spring Bootの例に接続でき、ノードなどを統合することができるので、他の代替案としてもよい.しかし、/metrics
のエンドポイントは、時間軸に従って監視されるものではなく、異なるノードにおける同じアプリケーションモジュール(水平拡張)も集約されていない.これは、時間系列の監視データがなく、孤立したノードに対する監視データのスナップショットのみが、この2つの状況に直面することを意味します.Spring Boot Admin with metrics from Actutor:a snapshot of metrics data of a given aplication node
Spring Boot Admin with JMX and MBeans read data of a give aplication node
jconsole
およびvisualvm
は、RMIを介してJMXノードに直接接続された別の選択であるかもしれない.ActuartはJMXからMBean内のMetricsデータを格納しています.また、ジョロッキアを使用することにより、MBeansはRESTful HTTPエンドポイントとして露出し、/jolokia
.したがって、同じ情報は、JMX MBean MetricsとReset HTTP Jolokiaの端点を二つの端点で取得することができる.しかし、このような方法には、クラスタ環境内の単一ノードに直接接続された同様の問題があり、また、古いRMIプロトコルの苦痛も伴う.JConsolie old-school JMX Metrics of a given aplication node
Visual VM JMX Metrics of a give aplication node
引き続き前進して、これらの問題を解決することができる近代的な運送手段を試しました.
Spring Boot Actutor Raw Metrics
Metrics sent by Telegraf to InfluxDB,colleced by Jolokia and JMX over HTTP
Grafana InfluxDB data source configration
Grafana Metric chart query and configration:gaugs of an API