Prometheusでシステム監視(Ubuntu20)

監視システムPrometheusのインストールおよび設定、動作確認を学習します。

スポンサーリンク

環境(サーバ)

※今回はubuntu20.10を使用

root@ubuntu20-10:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.10
Release: 20.10
Codename: groovy

システム監視用サーバー(ubuntu20.10)監視対象ノード (ubuntu20.04)    
インストールするソフトウェア
prometheus (Prometheusサーバ)
prometheus-node-exporter
prometheus-alertmanager (アラート機能を提供)
インストールするソフトウェア
proometheus-node-exporter      
prometheus-blackbox-exporter      
※その他サービスに応じて必要な exporter を追加

Prometheus インストール

※ここではCPU やメモリーなどの一般的なシステムリソースのデータを取得する [node-exporter])もインストール

root@ubuntu20-10:~$ apt -y install prometheus prometheus-node-exporter
root@ubuntu20-10:~$

Prometheusバージョンの確認

root@ubuntu20-10:~$ prometheus – -version
WARNING: Package “github.com/golang/protobuf/protoc-gen-go/generator” is deprecated.
A future release of golang/protobuf will delete this package,
which has long been excluded from the compatibility promise.
prometheus, version 2.20.0+ds (branch: debian/sid, revision: 2.20.0+ds-1)
build user: pkg-go-maintainers@lists.alioth.debian.org
build date: 20200723-19:57:30
go version: go1.14.4

サービスの自動起動設定

root@ubuntu20-10:~$ systemctl enable prometheus prometheus-node-exporter
root@ubuntu20-10:~$

Prometheus の起動

root@ubuntu20-10:~$ systemctl start prometheus
root@ubuntu20-10:~$

Prometheus の停止

root@ubuntu20-10:~$ systemctl stop prometheus
root@ubuntu20-10:~$

Prometheus の再起動 (設定ファイルの変更等を行った後に変更を反映させる際、等に実行)

root@ubuntu20-10:~$ systemctl restart prometheus
root@ubuntu20-10:~$

Prometheus のステータス確認

root@ubuntu20-10:~$ systemctl status prometheus
● prometheus.service – Monitoring system and time series database
Loaded: loaded (/lib/systemd/system/prometheus.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-08-04 16:10:09 JST; 1s ago
Docs: https://prometheus.io/docs/introduction/overview/
Main PID: 402983 (prometheus)
Tasks: 7 (limit: 2269)
Memory: 56.9M
CGroup: /system.slice/prometheus.service
mq402983 /usr/bin/prometheus
8月 04 16:10:09 ubuntu2010Server prometheus[402983]: level=info ts=2021-08-04T07:10:09.950Z caller=repair.go:59 component=tsdb msg=”Found he>
 ~略~
8月 04 16:10:10 ubuntu2010Server prometheus[402983]: level=info ts=2021-08-04T07:10:10.761Z caller=head.go:713 component=tsdb msg=”WAL segme>

Prometheus Web UI 画面の確認

(Web ブラウザーを起動し、[http://(サーバーのホスト名 または IPアドレス):9090/] へアクセス)

監視対象ノードの追加

[node-exporter] パッケージのインストール( 監視対象ノード側で設定)

https://github.com/prometheus/node_exporter

root@node01:~$ apt -y install prometheus-node-exporter
root@node01:~$

※node_exporterでは特に設定を行わなくても,起動しているだけでホストのCPUやディスクIO等の統計データを取得できる

[パターン①] 監視対象ノードの設定を追加( サーバ側で設定)

root@ubuntu20-10:~$ vi /etc/prometheus/prometheus.yml
…..
…..
scrape_configs:
# The job name is added as a label job=<job_name> to any timeseries scraped from this config.
job_name: ‘prometheus’
metrics_path defaults to ‘/metrics’
scheme defaults to ‘http’.
static_configs:
targets: [‘localhost:9090’]
33行目: targets にホストを追加
job_name: node
static_configs:
targets: [‘localhost:9100’ ,’node01.ubuntu20-04:9100′]

[パターン②] 監視対象ノードの設定を追加( サーバ側で設定) 【グループ分け表示を行う場合】

root@ubuntu20-10:~$ vi /etc/prometheus/prometheus.yml
…..
…..
scrape_configs:
# The job name is added as a label job=<job_name> to any timeseries scraped from this config.
job_name: ‘prometheus’
metrics_path defaults to ‘/metrics’
scheme defaults to ‘http’.
static_configs:
targets: [‘localhost:9090’]
33行目: targets にホストを追加
job_name: node
static_configs:
targets: [‘localhost:9100’]

#以下の記述を追記する
job name: MyLabo
static_configs:
targets: [node01.ubuntu20-04:9100 ‘]

Prometheus の再起動 (設定ファイル変更後の反映)

root@ubuntu20-10:~$ systemctl restart prometheus
root@ubuntu20-10:~$

Prometheus Web UIへアクセスし、設定したホストが追加されているかを確認 [パターン②の例]
※ [Status] > [Targets] をクリック

アラートの設定 AlertManager

AlertManagerのインストール

root@ubuntu20-10:~$ apt -y install prometheus-alertmanager
root@ubuntu20-10:~$

AlertManagerの設定は、設定ファイル /etc/prometheus/alertmanager.ymlで行う

root@ubuntu20-10:~$ vi /etc/prometheus/alertmanager.yml

// slackへ通知する場合、次の設定を追加
slack_api_url: <SlackのAPI URL>

その他のExpoter設定 blackbox_exporter

Exporter名使用Port用途
blackbox_exporter9115HTTPやTCPなどを介したエンドポイント情報を送信

Blackbox exporterのインストール ( 監視対象ノード側で設定)

root@node01:~$ apt -y install prometheus-blackbox-exporter
root@node01:~$

サービスの自動起動設定

root@node01:~$ systemctl enable prometheus-blackbox-exporter
root@node01:~$

SSH(22番ポート)を監視対象とする場合( サーバ側で設定)

root@ubuntu20-10:~$ vi /etc/prometheus/prometheus.yml
…..
….. 以下を追記する
[ssh_banner] モジュールを使用する場合
job_name: ‘Blackbox_ssh’ metrics_path: /probe params: module: [ssh_banner] static_configs: targets: # 対象ノード:ポート node01.ubuntu20-04:22
relabel_configs:
source_labels: [address]
target_label: __param_target
source_labels: [__param_target]
target_label: instance
target_label: address
replacement: node01.ubuntu20-04:9115

Prometheus の再起動 (設定ファイル変更後の反映)

root@ubuntu20-10:~$ systemctl restart prometheus
root@ubuntu20-10:~$

Prometheus Web UIへアクセスし、設定した監視対象(サービス)が追加されているかを確認
※ [Status] > [Targets] をクリック

Dockerを使用する場合

■Docker社が提供するDockerレジストリの「Docker Hub」

「Dockerレジストリ」は、Dockerイメージを共有するためのWebサービス

https://hub.docker.com/

●AlertManager:「prom/alertmanager」イメージを利用する

root@ubuntu20-10:~$ docker pull prom/alertmanager
root@ubuntu20-10:~$ docker run -d –name alertmanager -p 9093:9093 -v <設定ファイル>:/etc/alertmanager/config.yml -v <データ保存ディレクトリ>:/alertmanager prom/alertmanager

この記事が気に入ったら
いいね ! しよう

スポンサーリンク

おすすめ

error: Content is protected !!