LoginSignup
1
0

More than 1 year has passed since last update.

[03] "非K8s環境" で Prometheus を導入してみる ... NodeExporterを使ってみる

Last updated at Posted at 2021-10-10
本シリーズのトップページ
https://qiita.com/items/dfb16ffcbbe7745e765e

概要

変則的だが、職場の "非K8s環境" で Prometheus を導入することになったので
調査・導入検討をしてみた.

なお、職場の "非K8s環境" ではすでに「Zabbix 4.0」を導入しているが、
将来に備えて Prometheus を使ってみたいらしい.

前項で作成した環境に対して、NodeExporter を導入して次の監視をする.

・5分間連続して CPU 使用率が 80% を超えていたらアラート扱いにする

また、Zabbix ユーザ視点でのコメントも少し書き添えておく.

 

環境

ホスト(物理PC)

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"
$ hostname -I
192.168.10.47

構築する環境

項目 備考
Prometheus version 2.30.3 他者の環境では起動エラーになるといったトラブルを避けたいので、バージョン指定している
Grafana 8.2.0-ubuntu 同上
NodeExporter 物理ホスト上で稼働させる

image.png

手順

1. ファイル構成

前項からの続き.
現時点でのファイル構成は次の通り.

$ tree . --charset=C --dirsfirst
.
|-- PV
|   |-- etc
|   |   `-- prometheus
|   |       `-- prometheus.yml
|   `-- var
|       `-- lib
|           `-- grafana
|               |-- csv [error opening dir]
|               |-- plugins
|               |-- png [error opening dir]
|               `-- grafana.db
`-- docker-compose.yml

2. NodeExporter を稼働させる

NodeExporter は Zabbix Agent に該当する.
物理ホストでの操作である. 今回は検証だけなので適当なディレクトリで稼働させる.

NodeExporter の入手をする

$ mkdir bin
$ wget --no-check-certificate \
   https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz \
   -O nodexporter.tgz
$ tar xvfz nodexporter.tgz -C node --strip-components 1
$ cd bin

NodeExporter を稼働させる

nodeexporter を実行すると、9100 番ポートを LISTEN しているログが出る.
Zabbix Agent における 15000番ポートに該当する.

$ ./nodeexporter
略
level=info ts=2021-1 () msg="Listening on" address=:9100🛑
level=info ts=2021-1 () msg="TLS is disabled." http2=false

3. 監視ルールを作成し登録する

3-1. ルール「PV/etc/prometheus/prometheus-cpu.yml」を作成する

個人的には Zabbix でのトリガー設定に似ていると感じた.

なお、Zabbix とは異なり、WEB-UI を使わずに YAML で書ける点はメリットだと思うが、
Zabbix のような記述補助は充実していないようであった.

groups:
  - name: example
    interval: 1m
    rules:
    - alert: cpu_usage_high
      expr: 1 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m]))) > 0.8
      for: 5m

3-2. ルールを適用させる

上記 prometheus-cpu.yml を PV/etc/prometheus/prometheus.yml に適用させる

PV/etc/prometheus/prometheus.yml

NodeExporter として 192.168.10.47:9100 を新たに登録している.
(Zabbix だと WEB-UI で登録する操作であるが、この操作も YAML で行う)

そして、「rule_files」の項に、上記で作成した prometheus-cpu.yml を登録する.
(繰り返しになるが、このあたりの操作も Zabbix だと通常は WEB-UI での操作である)

 global:
   # How frequently to scrape targets by default.
   scrape_interval: 15s
   # How frequently to evaluate rules.
   evaluation_interval: 15s

 # A list of scrape configurations.
 scrape_configs:
   - job_name: 'prometheus'
     static_configs:
     - targets: ['192.168.10.47:49090']
+  - job_name: 'prometheus host machine'
+    static_configs:
+    - targets: ['192.168.10.47:9100']

+rule_files:
+  - prometheus-cpu.yml 

4. ルールを適用する

4-1. ファイル構成

.
|-- PV
|   |-- etc
|   |   `-- prometheus
|   |       |-- prometheus-cpu.yml 💥追加した💥
|   |       `-- prometheus.yml
|   `-- var
|       `-- lib
|           `-- grafana
|               |-- csv [error opening dir]
|               |-- plugins
|               |-- png [error opening dir]
|               `-- grafana.db
`-- docker-compose.yml

4-2. 再稼働させる

$ docker-compose restart prometheus

4-3. 稼働確認する

4-3-1. ターゲットの確認

監視対象であるターゲット (Zabbix における「ホスト」) が登録されたか否かを確認する.

WEB-UI を使って http://:49090/targets にアクセスして、
次のように登録されていれば良い.

image.png

また、上記赤枠をクリックしてメトリクス (Zabbix におけるアイテムの値) が表示されていることを見る.

image.png

4-4-2-. メトリックの確認

監視項目 (Zabbix における アイテム) が登録されたことを確認する

http://<IP>:49090/rules にアクセスして、次のように登録されていれば良い.

image.png

なお、上記「expr」右横のリンクをクリックすれば、アラートの発生状況が見られる.

 

以上

参考にした情報

『[改訂3版] Zabbix統合監視実践入門 (技術評論社)』
https://kazuhira-r.hatenablog.com/entry/2019/04/29/025816
Prometheus 公式
CentOS 8 実践ガイド[サーバ構築編]
Kubernetes実践ガイド クラウドネイティブアプリケーションを支える技術
PrometheusでKubernetesを監視する本 (電子版)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0