本シリーズのトップページ |
---|
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 | 物理ホスト上で稼働させる |
手順
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 にアクセスして、
次のように登録されていれば良い.
また、上記赤枠をクリックしてメトリクス (Zabbix におけるアイテムの値) が表示されていることを見る.
4-4-2-. メトリックの確認
監視項目 (Zabbix における アイテム) が登録されたことを確認する
http://<IP>:49090/rules
にアクセスして、次のように登録されていれば良い.
なお、上記「expr」右横のリンクをクリックすれば、アラートの発生状況が見られる.
以上
参考にした情報
・『[改訂3版] Zabbix統合監視実践入門 (技術評論社)』
・https://kazuhira-r.hatenablog.com/entry/2019/04/29/025816
・Prometheus 公式
・CentOS 8 実践ガイド[サーバ構築編]
・Kubernetes実践ガイド クラウドネイティブアプリケーションを支える技術
・PrometheusでKubernetesを監視する本 (電子版)