つぼみと花と梁を絡ませます
噴水のつばにきらめき、作る
一般的なものからの奇妙な組み合わせ
パーシー・ビッシュ・シェリーによる「鎖を解かれたプロメテウス」
メトリック収集とパフォーマンス監視の世界へようこそ。ほとんどのITと同様に、これらのツールを販売するために市場セクター全体が構築されています。そしてもちろん、いくつかのオープンソースユーティリティは同じ目的を果たします。これは、私たちが検討するこれらのオープンソースツールの1つです。
プロメテウスとは何ですか?
Prometheusは、SoundCloudによって開発され、オープンソースにリリースされたメトリック収集およびアラートツールです。 Prometheusは、GoogleのBorgmon監視システムと設計が似ており、比較的控えめなシステムで、毎秒数十万のメトリックの収集を処理できます。適切に調整およびデプロイされたPrometheusクラスターは、毎秒数百万のメトリックを収集できます。
プロメテウスはおよそ4つの部分で構成されています:
- メトリクスのスクレイピング、データベースへの保存、および(オプションで)照会時にメトリクスを取得する役割を担うメインのPrometheusアプリ自体。
- データベースバックエンドは、内部時系列データベースです。このデータベースは常に使用されますが、データをリモートストレージバックエンドに送信することもできます。
- エクスポーターは、さまざまなソースからデータを取り込み、Prometheusが取得できるメトリックに変換するオプションの外部プログラムです。
- エクスポーターは、特定のアプリケーションやハードウェアを操作するために設計されています。
- AlertManagerは、Prometheusに同梱されているアラート管理システムです。
- クライアントライブラリを使用して、カスタムアプリケーションをインストルメント化できます。
標準のPrometheusクラスターでは多くの追加アプリケーションがよく使用されるため、「大まかに」4つの部分と言います。より優れたグラフ作成機能が必要または必要な場合は、Grafanaなどのアプリケーションをデプロイできます。メトリックを長期間保存する必要がある場合は、リモートストレージバックエンドを検討する価値があります。そして、リストは続きます。ただし、この記事では、プロメテウス自体に焦点を当て、輸出業者に少し寄り道します。
[次のこともお勧めします:ウェブ開発者が必要とする6つのシステム管理者スキル]
メトリックとは何ですか?
そこに着く前に、なぜプロメテウスのようなものが存在するのかを理解する必要があります。それでは、質問から始めましょう:メトリックとは何ですか?簡単に言えば、メトリックは何かを測定します。たとえば、この記事を読むのにかかる時間は指標です。単語数はメトリックです。この記事の単語の平均文字数は指標です。
ただし、これらのメトリックはかなり静的であり、Prometheusのようなシステムが必ずしも必要なものではありません。 Prometheusは、時間の経過とともに変化する指標に優れています。たとえば、この記事が取得している「ビュー」の数を知りたい場合はどうでしょうか。または、ネットワークに出入りするトラフィックの量を知りたい場合はどうでしょうか。または、1時間に何回のビルドとデプロイのサイクルが発生していますか?これらはすべて、Prometheusに入力できるメトリックです。
メトリックとは何かを理解したので、Prometheusが格納する必要のあるメトリックを取得する方法を見てみましょう。 Prometheusが最初に必要とするのはターゲットです 。ターゲットは、Prometheusが保存するメトリックを提供するエンドポイントです。これらのエンドポイントは、監視されている実際のエンドポイントにすることも、エクスポーターと呼ばれるミドルウェアの一部にすることもできます。エンドポイントは、静的構成を介して提供することも、サービス検出と呼ばれるプロセスを介して「検出」することもできます。サービスディスカバリは、今後の記事のより高度なトピックです。
Prometheusがエンドポイントのリストを取得すると、それらからメトリックの取得を開始できます。 Prometheusは、非常に簡単な方法でメトリックを取得します。単純なHTTPリクエスト。構成は、メトリックとその現在の値を識別するテキストのストリームを提供するエンドポイント上の特定の場所を指します。 Prometheusはこのテキストのストリームを読み取り、#で始まる行を無視します コメントとして、受信したメトリックをローカルデータベースに保存します。
輸出業者への短いサイドトラック
Prometheusは、HTTPを使用して、メトリック収集のためにエンドポイントと通信することしかできません。 SNMPを使用してのみ通信するルーターまたはスイッチを監視しようとするとどうなりますか?または、ネイティブのPrometheusメトリックエンドポイントを持たないクラウドサービスを監視したい場合は、幸いなことに、解決策があります:輸出業者。
輸出業者にはさまざまな形とサイズがあります。これらは、Prometheusと、Prometheusをネイティブにサポートしていない、監視したいものとの間に立つように設計された、小さな専用のプログラムです。一部のエクスポーターは、Prometheusがデータをポーリングするまでアイドル状態になります。これが発生すると、エクスポーターは監視しているデバイスにアクセスし、関連データを取得して、Prometheusが取り込むことができる形式に変換します。他のエクスポーターはデバイスを自動的にポーリングし、結果をローカルにキャッシュして、Prometheusが後で取得できるようにします。
設計に関係なく、エクスポーターは、Prometheusと監視するエンドポイント間のトランスレーターとして機能します。一般的なデバイスやアプリケーションを監視しようとしている場合は、そのためのエクスポーターが存在する可能性があります。
データストレージ
Prometheusは、時系列データベースと呼ばれる特別なタイプのデータベースをバックエンドで使用します。簡単に言えば、このデータベースは、一定期間にわたって値として編成されたデータを格納および取得するように最適化されています。指標は、そのようなデータベースに保存するデータの種類の優れた例です。
外部ストレージもオプションです。 Thanos、Cortex、VictoriaMetricsなど、さまざまな利点を提供する多くの選択肢があります。主な利点の1つは、収集されたメトリックと長期保存を一元化することです。 Grafanaなどのツールは、これらのサードパーティのストレージソリューションに直接クエリを実行できます。
つまり、たくさんの指標があります...
Prometheusのエキスパートになり、メトリックを保存できるようになったので、このデータをどのように使用しますか? SQLデータベースと同じように、PrometheusにはPromQLと呼ばれるカスタムクエリ言語があります。 PromQLは、単純なメトリックの場合は非常に簡単ですが、必要に応じて非常に複雑になります。指標の名前を指定すると、その指標のすべての「インスタンス」が表示されます:
いくつかのPromQLメソッドを使用して、必要なデータを表すグラフを生成することもできます。
もちろん、グラフ化を真剣に考えている場合は、Grafanaなどのパッケージを調べる価値があります。 Grafanaを使用すると、メトリックダッシュボードを作成したり、アラートを送信したりできます。
警告
グラフは見栄えがしますが、メトリックは別の重要な目的を果たすことができます。アラートの送信に使用できます。 Prometheusには、この目的を果たすAlertManagerと呼ばれる別のアプリケーションが含まれています。 AlertManagerは、Prometheusから通知を受信し、アラートの重複排除と配信に必要なすべてのロジックを処理します。
アラートは、アラートルールを作成することによって作成されます。これらのルールは、クエリがtrueのときに起動する単なるPromQLクエリです。つまり、CPUの温度が80°Cを超えているかどうかをチェックするクエリがある場合、その条件を満たすメトリックごとにクエリが実行されます。
アラートルールには、ルールがtrueと評価される必要がある期間を含めることもできます。温度の例を拡張すると、短時間であれば80℃を超えても問題ありませんが、5分以上続く場合は、アラートを送信してください。アラートは、メール、Slack、Twitter、SMSなど、インターフェースを作成できるほとんどすべてのものを介して送信できます。
[システム自動化についてもっと知りたいですか? RedHatの無料の本であるTheAutomatedEnterpriseを始めましょう。 ]
まとめ
監視は重要です。問題が発生したことを特定するのに役立ち、問題が発生したことを示すことができます。適切な監視をさまざまな分野で使用して、監視対象のオブジェクトから可能な限りすべてを絞り出すことができます。
Prometheusは、強力なオープンソースのメトリクスパッケージです。これは、拡張性が高く、堅牢で、非常に高速です。単一の最新サーバーを使用して、1秒あたり100万以上のメトリックを監視できます。 Prometheusサーバーを配布すると、毎秒数千万、さらには数億ものメトリックを監視できます。
PromQLは、グラフ化とアラートに使用できる堅牢なクエリ言語を提供します。組み込みのグラフ作成システムは迅速な視覚化に最適ですが、長期的なダッシュボードはGrafanaなどの外部アプリケーションで処理する必要があります。