プロメテウスは、オープンソースモニタの新しい世代となることを目指しています。 過去とは異なる、そして過去を振り返ることのない近さ。

数年前から、多くの監視ツールが、そのアーキテクチャと哲学、または完全なフォーク(CheckMk、Centreon、OpsView、Icinga、Naemon、Shinken、Vigilo NMS、NetXMS、OP5など)によりNagiosと統合されています。

しかし、Prometheusのソフトウェアは「オープン」の精神に忠実であり、使用する場合は、さまざまな部品を組み合わせる必要があります。

Nagiosは、監視のイケアのようなもので、このツールで多くのことを行うことができますが、自分自身のパーツを組み合わせ、多くの時間を費やす必要があります。

プロメテウス・モニターの建築

Go言語で書かれたPrometheusは、フリー・テクノロジーとの統合に基づいたアーキテクチャを採用しています。

Prometheus kubernetesモニタリング

他の有名なシステムでは、マップを表示するために多くのプラグインやピースを使用していますが、Prometheusでは、例えば、データの可視化(Grafana)や通知の実行(Pagerduty)のために3つのパーツが必要です。

これらの高度な要素は、他の製品に置き換えることも可能ですが、プロメテウスは生態系の一部であり、唯一の手段ではありません。 そのため、Opensourceの他のプロジェクトと同じように、輸出業者や部品があります。

  • ハプロキシー
  • スタッツディー
  • グラファイト
  • グラファナ
  • ページャーデューティ
  • オプスジェンヌ
  • Y UN LARGUISIMO EXTERTABLE(ラージ・エクステラ)。

プロメテウスとデータシリーズ

Si te suena RRD estás pensando en lo correcto.

Prometheusは、定義されていない構造(clave valor)のデータを収集するフレームワークとして、また監視のためのツールとして使用することができます。 これにより、評価用のシンタクスを定義し、変化した場合にのみ保存することができます。

Prometheus は SQL データベースにデータを保存しません

同じようなことをやっているGraphiteも、他の世代のシステムでRRDにデータを保存しているのと同じように、Prometheusは特別なファイルにデータを保存しているのです。

時系列データを収集するためのツールをお探 しでしたら、OpenTSBD、InfluxDB、Graphiteに目を向けてみてください。

プロメテウスをどう使うか

もっと言えば、「プロメテウスを使わない理由」もあります。

このサイトでは、Si vas a utilizar esta herramienta para recoger logs, NO LO HAGAS, te proponen ELK en su lugarと紹介されています。

PrometheusをSNMPを使ったアプリケーション、サービス、リモート機器の監視に利用する場合、Grafanaを利用することで素晴らしいグラフィックを生成することができますが、その前に…

Prometheusでの設定

Prometheusのソフトウェアの設定はすべてYAMLテキストファイルで行われ、非常に完全なシンタックスを持っています。 さらに、雇用された各エクスポーターは、独立した設定ファイルを持っています。

設定を変更した場合は、変更内容を確認するためにサービスを再開してください。

プロメテウスの情報

プロメテウス・モニターには、いかなる情報もありません。

データ抽出のためのAPIを使用して、自分でプログラミングする必要があります。

そのため、独立したプロジェクトがいくつか存在します。

ダッシュボードとビジュアルパターン

Prometheusでダッシュボードを作成するには、Grafanaと統合する必要があります。

GrafanaとPrometheusが仲良く共存しているため、その方法についてのドキュメントがあります。

プロメテウスにおけるエスカラビリティー

Prometheusでより多くのデータ源を処理する必要がある場合は、常にサーボを追加することができます。

プロメテウスの各サーバーは独立した存在であり、仲間に迷惑をかけても機能することができます。

そのため、「Aサービス」「Bサービス」といったように、サービスごとに機能領域が分かれている必要があります。 各サーバーが独立するように。

このように、「エスカレート」させる方法がないため、シンクロニザーやデータ回復の方法が存在せず、独立したさまざまなサービスにおける情報への高度な可用性や共通のアクセス・フレームワークもありません。

しかし、これは「解決策」ではなく、あなた自身の最終的な解決策を設計するためのフレームワークなのです。

このように、Prometheusは、他の有名なツールとは桁違いの情報収集能力を備えていることに疑いの余地はありません。

Prometheusでシステムを監視する:輸出業者と収集業者

このツールで情報を得るには、さまざまな「方法」がありますが、そのどれもが「エクスポーター」と呼ばれるソフトウェアの断片が必要です。

独立した管理 (独自のデーモンや設定ファイルなど) が必要な、独自の YAML 設定ファイルを持つバイナリから脱却することはできません。

これは、Nagiosの「プラグイン」に相当するものです。

例えば、Prometheus には SNMP(snmp_exporter) やログ監視(grok_exporter) などのエキスポーターがあります。

サービスとしてのSnmpエクスポーターの設定例。

PrometheusモニタリングエクスポーターSNMP
PrometheusモニタリングエクスポーターSNMP

ホストの情報を取得するために、Nagiosのような一般的なエージェントとして機能する “node_exporter “をインストールすることができます。

この「node_exporter」は、さまざまな種類の素材を回収するもので、「collectores」と呼ばれるものです。

しかし、プロメテウスは数十人のコレクターをアクティブにしています。 付録1:アクティブなコレクター」をご覧ください。

さらに、さまざまなハードウェアやソフトウェアの情報を取得するための「エクスポート」または「プラグイン」が多数存在します。

エクスポートの数が適切であっても(約200)、Nagiosのために利用可能なプラグインの数(2000以上)には及びません。

ここに、Oracle エクスポーターの例を掲載します。

結論

Prometheusの現代的なモニタリングへの取り組みは、他の古いツールよりもはるかに柔軟性に富んでいます。 その哲学のおかげで、ハイブリッド・システムに容易に統合できるようになりました。

しかし、情報、ダッシュボード、そしてコンフィギュレーションを一元管理するシステムも不足しています。

つまり、サービスやホストに蓄積された情報を観察・監視することができるインターフェースです。

プロメテウスはデータ処理システムであり、ITの利用状況を監視するシステムではありません。

データ処理能力は非常に優れていますが、そのデータを日常的に使用するためには、多くの設定ファイルや配布された外部コマンドを必要とし、手動で管理しなければならないため、非常に複雑な管理となっています。

付録1:プロメテウスで活躍するコレクターたち

これらは、プロメテウスが提供するアクティブなシリーズ・コレクターたちです。

これらの “node_exporter “は、”colectores “と呼ばれるさまざまな種類の素材を回収しますが、これらはアクティブになっているシリーズ・コレクタです。

アープ proc/net/arp から ARP 統計情報を公開します。
キャッシュ sys/fs/bcache/ から bcache の統計情報を公開します。
ボンディング Linuxボンディングインタフェースの設定済みスレーブ数およびアクティブスレーブ数を公開します。
がいこつ btrfs の統計情報を公開
ブートタイム kern.boottime sysctl から得られるシステムの起動時間を公開します。
連結トラック conntrack の統計情報を表示します(/proc/sys/net/netfilter/ が存在しない場合は何も行いません)。
シーピーユー CPUの統計情報を公開
cpufreq CPU周波数の統計情報を公開
ディスクスタッツ ディスクI/Oの統計情報を公開する。
ダミー Desktop Management Interface (DMI) の情報を /sys/class/dmi/id/ から公開する。
エダック エラー検出と訂正の統計情報を公開する。
エントロピー 利用可能なエントロピーを公開する。
エグゼック 実行統計情報を公開する。
ファイバーチャネル sys/class/fc_host/ からファイバーチャネル情報および統計情報を公開します。
ファイルフッド ファイルディスクリプタの統計情報を /proc/sys/fs/file-nr から公開します。
ファイルシステム ディスク使用量など、ファイルシステムの統計情報を公開します。
ホウモン sys/class/hwmon/ からハードウェアモニタリングとセンサーデータを公開します。
インフィニバンド InfiniBandおよびIntel OmniPathの構成に特有のネットワーク統計情報を公開します。
きっぱん proc/net/ip_vs から IPVS の状態を、/proc/net/ip_vs_stats から統計情報を公開します。
ロードアビッグ ロードアベレージを公開する。
マッドマッド デバイスに関する統計情報を /proc/mdstat に公開する (/proc/mdstat が存在しない場合は何もしない)。
ミムインフォ メモリの統計情報を公開します。
ネットクラス sys/class/net/ からネットワークインターフェース情報を公開
ネットデフ 転送されたバイト数など、ネットワークインターフェイスの統計情報を公開します。
ネットスタット proc/net/netstat からネットワーク統計情報を公開します。 netstat -s と同じ情報です。
エヌエス proc/net/rpc/nfs から NFS クライアント統計情報を公開します。 これは、nfsstat -cと同じ情報です。
エヌエフエスディー NFS カーネルサーバーの統計情報を /proc/net/rpc/nfsd から公開します。 nfsstat -s と同じ情報です。
エヌヴイエム NVMeの情報を/sys/class/nvme/から公開する。
オーエス etc/os-release または /usr/lib/os-release から OS のリリース情報を公開する。
電源クラス sys/class/power_supply から電源の統計情報を公開する。
圧力 proc/pressure/ から圧力失速の統計情報を公開します。
はねる sys/class/powercap から各種統計情報を公開します。
スケジューリングスタット タスクスケジューラの統計情報を/proc/schedstatから公開します。
くつしたどめ proc/net/sockstat から各種統計情報を公開します。
ソフトネット proc/net/softnet_stat から統計情報を公開します。
スタット proc/stat から各種統計情報を公開します。 これには、ブートタイム、フォーク、割り込みが含まれます。
タペストリー sys/class/scsi_tape から統計情報を公開します。
テキストファイル ローカルディスクから読み込んだ統計情報を公開する。 –collector.textfile.directory フラグを設定する必要があります。
サーマル pmset -g thermのように熱統計情報を公開します。
サーマルゾーン sys/class/thermal からサーマル・ゾーンおよび冷却装置の統計情報を公開します。
現在のシステム時刻を公開する。
タイムス 選択された adjtimex(2) システムコールの統計情報を公開します。
udp_queues proc/net/udp および /proc/net/udp6 から rx_queue と tx_queue の UDP 合計長を公開します。
不似合い uname システムコールで提供されるシステム情報を公開します。
ブイエムスタット proc/vmstat から統計情報を公開します。
xfs XFSのランタイム統計情報を公開します。
zfs ZFSパフォーマンスの統計情報を公開します。
プロメテウスの不具合で稼働したコレクターたち

付録2:Oracle エクスポーターの例

これは、Oracle エクスポーターで作成される情報の一例であり、ファ イルの設定と、クレデンシャルと SID を定義する一連の環境変数によって作成され ます。

  • oracledb_exporter_last_scrape_duration_seconds
  • oracledb_exporter_last_scrape_error
  • oracledb_exporter_scrapes_total
  • オラクルドビーアップ
  • oracledb_activity_execute_count
  • oracledb_activity_parse_count_total
  • oracledb_activity_user_commits
  • oracledb_activity_user_rollbacks
  • ORACLEDB_SESSIONS_ACTIVITY
  • ORACLEDB_WAIT_TIME_APPLICATION
  • oracledb_wait_time_commit
  • oracledb_wait_time_concurrency
  • oracledb_wait_time_configuration
  • oracledb_wait_time_network
  • oracledb_wait_time_other
  • oracledb_wait_time_scheduler
  • oracledb_wait_time_system_io
  • oracledb_wait_time_user_io
  • oracledb_tablespace_bytes
  • oracledb_tablespace_max_bytes
  • oracledb_tablespace_free
  • oracledb_tablespace_used_percent(テーブルスペース使用率
  • oracledb_process_count
  • ORACLEDB_RESOURCE_CURRENT_UTILIZATION
  • oracledb_resource_limit_value

エクスポーターの設定方法を知るために、JMX エクスポーターの設定ファイルを例に挙げてみましょう。

---
startDelaySeconds: 0
hostPort: 127.0.0.1:1234
username: 
password: 
jmxUrl: service:jmx:rmi:///jndi/rmi://127.0.0.1:1234/jmxrmi
ssl: false
lowercaseOutputName: false
lowercaseOutputLabelNames: false
whitelistObjectNames: ["org.apache.cassandra.metrics:*"]
blacklistObjectNames: ["org.apache.cassandra.metrics:type=ColumnFamily,*"]
rules:
  - pattern: 'org.apache.cassandra.metrics<type=(\w+), name=(\w+)><>Value: (\d+)'
    name: cassandra_$1_$2
    value: $3
    valueFactor: 0.001
    labels: {}
    help: "Cassandra metric $1 $2"
    cache: false
    type: GAUGE
    attrNameSnakeCase: false
Shares