IRIS 2019.4以降の製品には、Prometheus形式でIRISのメトリックを公開する/api/monitorサービス機能が実装されています。 IRISのメトリックを監視・警告ソリューションの一部として使用したい人にとっては大きなニュースです。 このAPIは、IRISの次期バージョンでリリースされる予定の新しいIRIS System Alerting and Monitoring (SAM) ソリューションのコンポーネントです。
ただし、IRISインスタンスを監視するためにSAMがこのAPIの計画と実証実験を開始するのを待つ必要はありません。 今後の投稿では利用可能なメトリックとその意味についてさらに掘り下げ、対話型ダッシュボードの例を示します。 しかし、まずは背景の説明といくつかの質問と回答から始めましょう。
IRIS(およびCaché)は常に自分自身とその実行プラットフォームに関する数十のメトリックを収集しています。 これらのメトリックを収集し、CachéとIRISを監視する方法は常に複数存在します 。 また、IRISとCachéの組み込みソリューションを使用しているインストール環境はほとんどないことが分かっています。 例えば、History Monitorはパフォーマンスとシステムの使用状況に関するメトリックの履歴データベースとして長い間利用されてきました。 しかし、これらのメトリックと計測システムをリアルタイムで表示する明確な方法はありませんでした。
IRISプラットフォームソリューションは(その他のあらゆるソリューションと同様に)少数のオンプレミスインスタンスで実行されている単一のモノリシックアプリケーションから「あらゆる場所」に配置される分散ソリューションに移行しています。 既存のIRIS監視オプションは、多くの使用事例でこれらの新しいパラダイムに適合していません。 InterSystemsは既存の技術を作り直すのではなく、好評で実績のある現在の監視・警告用オープンソースソリューションに目を向けました。
Prometheusとは?
Prometheusは実績のある技術に基づいた、広く普及している有名なオープンソースの監視システムです。 同システムにはさまざまなプラグインがあります。 また、クラウド環境内で適切に機能するように設計されていますが、オンプレミスでも同様に役立ちます。 プラグインには、オペレーティングシステム、ApacheなどのWebサーバー、およびその他の多くのアプリケーション向けのものがあります。 PrometheusはGrafanaなどのフロントエンドクライアントでよく使用されており、高度なカスタマイズ性と優れたUI/UXエクスペリエンスを提供します。
Grafanaとは?
Grafanaもオープンソースです。 この連載を進める中で、一般的なシナリオの監視ダッシュボードのサンプルテンプレートをご紹介します。 サンプルをベースに監視対象項目のダッシュボードを設計できます。 本当の力は、状況に応じたIRISメトリックを使用中のソリューションスタック全体のメトリックと組み合わせるときに発揮されます。 例えば、プラットフォームのコンポーネント、オペレーティングシステム、IRISのメトリックがありますが、特にアプリケーションからインストルメンテーションを追加する場合もそうです。
これらは実績のあるソリューションです。
PrometheusおよびGrafanaによるIRISとCachéの監視は目新しいことではありません。 私はこれらのアプリケーションを数年間使用し、自分の開発環境やテスト環境を監視しています。 開発者コミュニティで「Prometheus」を検索していただければ、CachéのメトリックをPrometheusで使用するために公開する方法を説明した他の投稿(Mikhail Khomenkoによるいくつかの優れた投稿など)が見つかります。
現在との違いは、/api/monitor APIが含まれ、デフォルトで有効になっていることです。 メトリックを公開するために独自のクラスをコーディングする必要はありません。
Prometheus 入門
ここでは、Prometheusといくつかの用語について簡単に説明します。 私はIRISまたは他のソースが提供するメトリックの可視化方法や利用方法について、概要を理解し、基礎を固め、実践する機会を作っていただきたいと考えています。
Prometheusは、アプリケーションがHTTPエンドポイント(IRIS /api/monitor などの各種API)として公開する時系列データをスクレイピングまたは取得することで機能します。エクスポーターとクライアントライブラリは多くの言語、フレームワーク、オープンソースアプリケーションに対応しています。例えば、ApacheなどのWebサーバー、オペレーティングシステム、Docker、Kubernetes、データベース、現在のIRISなどが挙げられます。
エクスポーターはアプリケーションやサービスを計測し、スクレイピング用にエンドポイントで関連メトリックを公開するために使用されます。 Webサーバー、データベースなどの標準コンポーネントは基本的なエクスポーターでサポートされています。 他の多くのエクスポーターは、Prometheusコミュニティからオープンソースで公開されています。
Prometheus用語集
知っておくと便利な用語がいくつかご紹介します。
- ターゲットは、ホストやアプリケーション、ApacheやIRISなどのサービス、独自のアプリケーションなど、監視対象となるサービスの場所です。
- PrometheusはHTTPを利用してターゲットをスクレイピングし、メトリックを時系列データとして収集します。
- 時系列データは、IRISなどのアプリケーションやエクスポーターを介して公開されます。
- エクスポーターは、Linuxカーネルのメトリックなどの制御できないものに使用できます。
- 結果の時系列データは、Prometheusサーバーのデータベース内にローカルに保存されます**。
- 時系列データベースは、最適化されたクエリ言語(PromQL)を使用して照会できます。 例えば、アラートを作成したり、Grafanaなどのクライアントアプリケーションを使用してダッシュボードにメトリックを表示したりできます。
**ネタバレ注意:セキュリティ、スケーリング、高可用性およびその他の運用効率の理由から、新しいSAMソリューションではPrometheusの時系列データに使用されるデータベースはIRISになっています! ただし、IRISでのPrometheusデータベースへのアクセスは透過的であるため、Grafanaなどのアプリケーションがその事を認識したり、問題にすることはありません。
Prometheusのデータモデル
APIが返すメトリックはPrometheus形式です。 Prometheusは1行ごとに1つのメトリックを持つ単純なテキストベースのメトリック形式を使用します。次のような形式になっています。
<identifier> [ (time n, value n), ....]
メトリックには、(キー、値)のペアとしてラベルを付けることができます。 ラベルは、メトリックをディメンションとしてフィルタリングする強力な方法です。 例として、IRIS /api/monitorに対して返された単一のメトリックを調べます。 この場合、ジャーナルの空き容量は次のようになります。
iris_jrn_free_space{id="WIJ",dir=”/fast/wij/"} 401562.83
識別子はそのメトリックが何であるかを表し、その出処を伝えるものです。
iris_jrn_free_space
複数のラベルを使用してメトリックを装飾し、後からフィルタリングとクエリに使用できます。 この例では、WIJと、WIJが格納されているディレクトリを確認できます。
id="WIJ",dir="/fast/wij/"
また、値は401562.83 (MB) です。
どんなIRISメトリックを利用できますか?
プレビューのドキュメントのメトリックのリストを掲載しています。 ただし、リストの内容は変更される可能性がありますのでご注意ください。 または、単に /api/monitor/metrics エンドポイントを照会し、リストを確認することもできます。 コミュニティの次の投稿では、Postmanの使い方についてご説明します。
何を監視対象にすべきですか?
システムとアプリケーションの監視方法を検討する場合は以下の点に留意してください。
- 可能な場合は、ユーザーに影響を与える重要なメトリックを計測してください。
- ユーザーはあなたが所有するマシンのCPU能力不足を気にしません。
- ユーザーはサービスの遅延やエラーを気にします。
- プライマリダッシュボードでは、ユーザーに直接影響する概要メトリックに注目してください。
- ダッシュボードをグラフで埋め尽くさないでください。
- 人間は一度に多くのデータを処理することはできません。
- 例えば、サービスごとにダッシュボードを用意してください。
- マシンではなくサービスについて考えてください。
- 問題を1つのサービスに特定したら、それを掘り下げ、1台のマシンに問題があるかどうかを確認できるようになります。
参考情報
PrometheusとGrafanaのドキュメントとダウンロード
SAM(PrometheusとGrafanaを含む)のプレリリース概要をInterSystems Global Summit 2019で発表しました。リンクはInterSystemsの学習サービスでご確認いただけます。 直接リンクが機能しない場合は、InterSystems学習サービスのWebサイトにアクセスして「System Alerting and Monitoring Made Easy」を検索してください。
コミュニティで「Prometheus」と「Grafana」を検索してください。
次のパート「例:デフォルトのREST APIを使用したInterSystems IRISの監視メトリックの確認」を読み進めてください。