Prometheusはコンテナやクラウドなどの大量コンポーネントを監視する事に特化したソフトウェアです。このページではパッケージインストール手順を紹介します。パッケージはsystemd関連の設定も整っており非常に便利ですが、公式手順ではないため自己責任での利用をお願いします(政治的に面倒な案件では採用しない方が無難です)。
前提
参照資料
公式手順ではない事を留意ください。
動作確認済環境
- Rocky Linux 8.5
- Prometheus 2.36.2
- node_exporter 1.3.1
Prometheus
インストール
Prometheusのリポジトリを登録します。
cat << 'EOF' > /etc/yum.repos.d/prometheus.repo [prometheus] name=prometheus baseurl=https://packagecloud.io/prometheus-rpm/release/el/$releasever/$basearch repo_gpgcheck=1 enabled=1 gpgkey=https://packagecloud.io/prometheus-rpm/release/gpgkey https://raw.githubusercontent.com/lest/prometheus-rpm/master/RPM-GPG-KEY-prometheus-rpm gpgcheck=1 metadata_expire=300 EOF
Prometheusのバージョン2系をインストールします。
dnf install prometheus2
起動
RPMのPrometheusはsystemdが設定済の状態となっていますので、以下のようなsystemctlコマンドでPrometheusの起動停止ができます。
systemctl enable prometheus.service --now
動作確認
以下URLをブラウザで開きます。「/」へのアクセスを試みると、「/graph」へリダイレクトされグラフ描画ページへ遷移します。
http://<IPアドレス>:9090/
以下URLをブラウザで開きます。すると、監視項目の一覧が表示されます。この画面で表示される監視項目のうち1つをメモに控えましょう。
http://<IPアドレス>:9090/metric
再びグラフ描画ページ(http://<ip_addr>:9090/graph)に戻ります。検索窓に監視項目(例:prometheus_http_requests_total)を入力し、「Graph」を押下します。すると、監視結果がグラフ化される事が分かります。
Node exporter
インストール
前述の操作で監視されているのはPrometheusそのものです。PrometheusはGo言語で作成されたHTTPサーバで、そのHTTPサーバのメモリ使用量や200応答の回数などがメトリックとして蓄積されていきます。
それではPrometheusではなく仮想マシンそのものを監視してみましょう。PrometheusはHTTPで公開されたメトリック情報をスクレイピングして情報を蓄積します。ですので、HTTPで公開できる情報ならば「何でも」監視する事ができます。それではOSの情報をHTTPとして公開するNode exporterをインストールしてみましょう。
dnf install node_exporter
起動
RPMのnode_exporterはsystemdが設定済の状態となっていますので、以下のようなsystemctlコマンドでnode_exporterの起動停止ができます。
systemctl enable node_exporter.service --now
動作確認
Node exporterによってメトリックがHTTPによって公開されているかどうかを確認します。以下のようなcurlコマンドを実行しメトリックを取得できるかどうかを確認します。
curl http://localhost:9100/metrics
curlコマンドの実行結果をよく観察すると、diskやcpuなどOSに関する情報を取得できている事が分かるかと思います。以下に出力の一部を載せます。
[root@linux010 ~]# curl http://localhost:9100/metrics <omitted> # HELP node_cpu_seconds_total Seconds the CPUs spent in each mode. # TYPE node_cpu_seconds_total counter node_cpu_seconds_total{cpu="0",mode="idle"} 2950.73 node_cpu_seconds_total{cpu="0",mode="iowait"} 84.4 node_cpu_seconds_total{cpu="0",mode="irq"} 4.58 node_cpu_seconds_total{cpu="0",mode="nice"} 1.1 node_cpu_seconds_total{cpu="0",mode="softirq"} 1.82 node_cpu_seconds_total{cpu="0",mode="steal"} 0 node_cpu_seconds_total{cpu="0",mode="system"} 15.89 node_cpu_seconds_total{cpu="0",mode="user"} 23.23 <omitted>
Prometheusとの連携
Promethesで監視する対象はprometheus.ymlに記述します。以下のようにtcp9090(prometheus)とtcp9100(node_exporter)を監視するような定義を作成します。
cat << EOF > /etc/prometheus/prometheus.yml scrape_configs: - job_name: prometheus static_configs: - targets: - localhost:9090 - job_name: node static_configs: - targets: - localhost:9100 EOF
Prometheusを再起動します。
systemctl restart prometheus.service
監視対象ページ(http://<ip_addr>:9090/targets)を表示すると、prometheusとnodeの2つを監視している事が分かります。
グラフ描画ページ(http://<ip_addr>:9090/graph)を表示します。検索窓に監視項目(例:node_cpu_seconds_total)を入力し、「Graph」を押下します。すると、監視結果がグラフ化される事が分かります。