Sysdig MonitorにおけるPrometheusエクスポーター

By 清水 孝郎 - MARCH 2, 2023

SHARE:

Sysdig MonitorにおけるPrometheusエクスポーター

本文の内容は、2023年3月2日に VICTOR HERNANDOが投稿したブログ(https://sysdig.com/blog/prometheus-exporters)を元に日本語に翻訳・再構成した内容となっております。 昨今、Prometheusをベースとした監視ソリューションを複数導入している企業は割と見かけますが、その分、苦労も絶えません。膨大な数のシステム、アプリケーション、サードパーティソフトウェアが、Prometheusのメトリクスをネイティブに公開するためのインスツルメンテーションを備えていないのです。そこで、Prometheusエクスポーターの出番となるわけです。 何十、何百ものPrometheusエクスポーターをデプロイし、設定し、維持するのは大変なことです。同じソフトウェアに多くの異なるエクスポーターを見つけ、どれが自分のニーズに最も合うのかわからなくなったことはありませんか?何らかの理由でメトリクスをレポートしなくなったエクスポーターはありませんか?Prometheusエクスポーターの問題のトラブルシューティングにうんざりしていませんか?この記事では、Prometheusエクスポーターの運用と保守の課題を解決します。 Sysdig Monitorは、自動インテグレーションとPrometheusエクスポーターウィザードのおかげで、大量のインテグレーションを箱から出して、統合された観測可能なエクスペリエンスを提供します。Sysdigは、サードパーティのソフトウェアメトリクスをインテグレーションする際に、スムーズな体験を提供します。また、PrometheusエクスポーターのメンテナンスもSysdigが代行しますので、もう心配する必要はありません。 もっと詳しく知りたいですか?続けてお読みください。

Prometheusエクスポーターとは何ですか?

Prometheusエクスポーターとは、ホストやコンテナで動作するエージェントやソフトウェアの一種です。特定のソフトウェアやアプリケーション(ターゲット)とのコミュニケーションを担当し、情報を取得し、そのデータを新しいメトリクスエンドポイント経由でエクスポートすることをミッションとしています。 Prometheusエクスポーターのアーキテクチャーとデザインに関しては、エクスポーターのインストルメントと実装自体によってプログラミング言語が異なる可能性があります。Prometheusの各エクスポーターは、API、エンドポイント、既に公開されているサービス、またはその他の方法で、ターゲットからデータを取得する独自のメカニズムを持つことができます。また、/metrics エンドポイントが公開されるポートや、エンドポイントに使用されるプロトコル(httpかhttpsか)も同様に異なります。 Prometheusのインテグレーションは数多く存在し、コミュニティによってメンテナンスされています。以下のような様々なユースケースに対応したPrometheusエクスポーターを見つけることができます。
  • Kubernetesコンポーネント
  • データベース
  • ハードウェア関連の統計情報
  • HTTPサービス
  • ストレージ
  • パブリックAPIサービス
Kubernetesで最も知られ、広く採用されているPrometheusエクスポーターの1つが、kube-state-metricsやPrometheusノードエクスポーターで す。 例えば、以下の図にあるように、ノードエクスポーターのPodは、すべてのKubernetesノードで稼働しています。このエクスポータは、CPU統計、ファイルシステム情報、ロードアベレージなど、ノードから必要なデータをすべて取得する役割を担っています。ノードエクスポーターはこのデータをメトリクスに変換し、この情報をパブリックな /metrics エンドポイントに公開します。Prometheusはこれらのメトリクスや他のメトリクスをスクレイピングし、独自のTSDB(時系列データベース)に格納することができます。 この時点で、あなたは疑問に思うかもしれません。サードパーティのソフトウェアからメトリクスを取得するのに、なぜPrometheusのエクスポーターを使わなければならないのか?この種のアドオンを回避し、メトリクスを直接取得する方法はないのでしょうか?答えは簡単で、メトリクスを取得したいソフトウェアに依存します。そのソフトウェアが適切にインストルメント化されており、独自のメトリクスエンドポイントを公開していれば、メトリクスを取得することができます。そうでない場合は、Prometheusエクスポーターをデプロイする必要があります。例えば、etcdの監視であれば、exporterは全く必要ありません。 Sysdig Promcatチームは、Prometheusエクスポーターコミュニティに積極的に参加し、貢献しています。そのミッションの1つは、複数のアプリケーションにPrometheusエクスポーターという形でオープンソースのソリューションを提供することです。これらのエクスポーターは、Sysdigのエンジニアリングチームによって管理・維持されています。目標の1つは、Prometheusエクスポーターの採用を促進すると同時に、優れたユーザーエンタープライズエクスペリエンスを提供することです。

課題と問題点

ここからは、Prometheusエクスポーターを利用する際に直面する可能性のある課題や問題点について説明します。
  • 1つのアプリケーションに対して、複数のエクスポーターを見つけることができます。どのエクスポーターが最適なのでしょうか?何を選べばいいのでしょうか?これらの疑問は、時間をかけてどれが自分のニーズに合っているかを確認した後に答えが出るかもしれません。
  • 多くの場合、エクスポーターにはさまざまなイメージがあります。通常、「latest」タグを頼りにしますが、これが正しく固定されていないことがあります。イメージが元のリポジトリから移ってしまったということもありえます。これでは多くの労力と時間を浪費することになります。
  • エクスポーター用のベースイメージの多くは、多くの脆弱性を含んでいる可能性があり、高いリスクにさらされています。
  • オープンソースコミュニティは、Prometheusに大量のエクスポーターを供給しています。多くの所有者と保守者がいるので、すべてのエクスポーターは、シークレット、変数、configmapなどの独自の設定を持っています。一般的に定義されたアーキテクチャーやデザインなどは存在しないので、すべてのエクスポーターは独自の冒険をもたらします。
  • Prometheusのエクスポーターは古かったり、メンテナンスされていなかったりすることがあります。そのため、状況によってはメトリクスを引き出すことができなくなる可能性があります。例えば、特定のソフトウェアの新しいバージョンを実行している場合、エクスポーターは以前のバージョン用に設計されていることがあります。このようなシナリオでは、メソッドが変更されているため、エクスポーターはAPIと通信できません。
  • 膨大な数のエクスポーターを実行し、維持していることに気づくかもしれません。アプリケーションがインストルメント化されておらず、独自の /metrics エンドポイントを公開している場合、専用のエクスポーターをデプロイする必要があります。
  • Prometheus scrapeの設定は、新しいカスタム /metrics エンドポイントを追加するたびに必要になります。大したことではありませんが、結局は大量のジョブを設定・管理することになるかもしれません。

Sysdig Monitor インテグレーションの仕組み

Sysdigは、Kubernetesやクラウド環境からデータを取得し、メトリクスを取得するための独自のエージェントを備えています。Sysdig Agentが舞台裏でどのように動作しているかを詳しく知りたい方は、こちらの記事をご覧ください。メトリクスがどのように取り込まれるのか、またSysdig Agentを使用する利点について、より深く理解することができます。 簡単に言うと、Sysdig Agentは軽量のPrometheusインスタンスを組み込んでいます。そうすることで、通常のDIY PrometheusとしてKubernetesやカスタムエンドポイントからメトリクスをスクレイピングすることができるのです。そのため、Kubernetesに独自のPrometheusインスタンスをデプロイしたり、KSMをデプロイしたり、Prometheusノードエクスポーターをデプロイする必要はありません。 こちらで説明したように、Sysdig MonitorはKubernetesのコンポーネントと独自のサードパーティワークロードの両方を検出します。これは、Kernel insights コレクションのおかげで実現されています。Prometheusインテグレーション・オファリングを確認したい場合は、ドキュメントページをご覧ください。 Sysdig Monitorのポータルは、すぐに使えるダッシュボードでメトリクスデータを表示し、そのサービスで利用できる定義済みのアラートのいくつかを有効にするかどうかを選択できるので、これらのインテグレーションの多くは、デフォルトで有効になっています。 インテグレーションによっては、手作業が必要な場合があります。場合によっては、エージェントがメトリクスを取得できるようにするために、ConfigMapやsecretsを作成する必要があります。そのような場合、Sysdig Monitor は、いくつかのガイド付きステップでインテグレーションを構成してデプロイできるようにする構成ウィザードを通じて、完全なエンタープライズ体験を提供します。 主なクラウドプロバイダー向けのクラウドインテグレーションも利用可能です。Sysdig Monitorとクラウドプロバイダーを接続するだけで、クラウドサービス用のダッシュボードやアラートとともに、多くのクラウドメトリクスを利用できます。

実際の環境で練習したいですか?

Prometheusエクスポーターを設定するための無料のハンズオンラボに今すぐ登録しましょう。


Sysdig Monitorとサードパーティソフトウェアのインテグレーションを利用するメリット

すでにお分かりのように、Sysdig Monitor は、サードパーティのアプリケーションのインテグレーションに関して、ユニークでスムーズな体験を提供します。コンソールから、すでに設定されたものからインストール待ちのものまで、インテグレーションに関するすべての情報をまとめたサマリーを見ることができます。 Sysdig MonitorのインテグレーションとPrometheusのエクスポーターの利点を比較してみましょう。
  • Sysdig Monitor インテグレーションは、0日目から利用可能です。多くのインテグレーションは既に実装されており、メトリクスを自動的に収集してくれます。その他、シークレットやConfigMapの作成など、追加の手動ステップが必要なものもありますが、ガイド付きウィザードが用意されているので心配は無用です。
  • Kubernetesのコントロールプレーンコンポーネントのような重要なエンドポイントは、すでに監視され、最初から利用可能です。エクスポーターをデプロイしたり、Prometheusの設定ファイルを構成したりする必要はありません。
  • Sysdig Monitorのエクスポーターに使用されるベースイメージは、Sysdigが管理しています。イメージのバージョン履歴を管理し、正しいタグ付けを維持します。UBIイメージも利用可能です。
  • イメージの脆弱性はSysdigが管理します。
  • Sysdig Monitorポータルで利用可能な監視インテグレーションは、すでにメンテナンス、テスト、および完全な機能を備えています。安定性やその他の設定に関する問題を心配する必要はありません。モニタリングインテグレーションをデプロイすると、お約束通りメトリクスと定義済みのアラートを受け取ることができます。インテグレーションはSysdigがライフサイクルを管理し、メトリクスが機能しなくなることはありません。
  • Sysdig Moniotorインテグレーションをデプロイすると、Helmチャートが利用できるようになり、作業が容易になります。
  • Sysdig Agentは、メトリクスのスクレイピングを担当します。prometheus.yamlファイルの保守や設定は一切必要ありません。負担が大幅に軽減されます。

まとめ

Prometheus エクスポーターを設定・維持するのは大変な作業です。オープンソースコミュニティによって作成・保守されているPrometheus エクスポーターは大量にありますが、Kubernetes環境やクラウドネイティブアプリケーションからデータを引き出す際には苦労することがあります。 Sysdig Monitorは、エンタープライズソリューションを提供します。膨大なリストの中からどのPrometheus エクスポーターが良いのか、複雑なエクスポーターのインストールに悩む必要はもうありません。必要なものはすべてSysdig Monitorポータルにあります。アウトオブボックスで提供されているインテグレーションを楽しんだり、ガイド付きウィザードのおかげでいくつかのステップを踏んで他のインテグレーションをデプロイするだけです。 Sysdig Monitor がサードパーティのソフトウェア監視やPrometheus エクスポートにどのように役立つか、もっと知りたい方は、Sysdig Monitor のトライアルページにアクセスして、30日間の無料アカウントをリクエストしてください。数分で使い始めることができます!