概要
Prometheus未経験の非インフラエンジニアが、Grafanaでサーバモニタリングができるようになるまでの
軌跡を記録します。
とりあえず、モニタリングができることが目標なので運用面の考慮等はしていませんが、参考になれば幸
いです。
きっかけ
検証環境のとあるサーバが突然死しました。
なぜ死んだのかは分かりませんでした。
というのも、OSと必要最低限のミドルウェアをインストールしただけのサーバだったのです。
これは良くないなと思い、サーバをモニタリングしたいなと思いました。
sysstatとか使えば良いのかもしれませんが、せっかくなのでPrometheusを使ってみることにしました。
Prometheusとは
システムおよびサービスのモニタリングシステムです。
設定されたターゲットから定期的にデータを収集して
- 蓄積
- 可視化(Prometheusでの可視化は、今回は触れません)
- アラートの通知(今回は触れません)
を行うことが可能です。
Grafanaとは
Grafanaは、様々なデータソースから取得したデータを可視化するツールです。
Prometheus自体でも可視化は可能ですが、アドホックな立ち位置で利用されるものだそうです。
可視化には、Grafanaを使うよう公式サイトに記載されています。
今回構築する環境の構成
①prometheus server
いわゆるPrometheusと呼ばれるものです(だと思っています)。
②exporter
監視エージェントです(だと思っています)。 取得したい情報に応じて、exporterをインストールします。
主なexporterは、Prometheusのマニュアルに記載されています。
①prometheus server は、 ②exporter に対して定期的に情報を取得しに行き、データを蓄積します。
③Grafana
③Grafana は、 ①prometheus server からデータを取得し、可視化を行います。
インストール
順番は前後しますが、
- ②exporter
- ①prometheus server
- ③Grafana
の順番でインストールします。
前提条件
- OS: AlmaLinux 8.8
②exporterのインストール
今回は、サーバの状況が知りたいので、node_exporterをインストールします。
(1)ソースをダウンロード
Prometheusのダウンロードページのリンクから node_exporter-1.7.0.linux-amd64.tar.gz をダウンロードしました。
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
(2)ダウンロードしたソースを解凍する
tar xzvf node_exporter-1.7.0.linux-amd64.tar.gz
(3)node_exporterを起動する
cd node_exporter-1.7.0.linux-amd64 ./node_exporter
(4)node_exporterの起動確認
node_exporterが起動していることを確認します。
- node_exporterのポート番号
- 9100
- exporterのエンドポイント
- /metrics
コマンド
curl -s http://localhost:9100/metrics
実行結果
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles. # TYPE go_gc_duration_seconds summary go_gc_duration_seconds{quantile="0"} 3.0043e-05 go_gc_duration_seconds{quantile="0.25"} 4.12e-05 go_gc_duration_seconds{quantile="0.5"} 4.6299e-05 ・ ・ ・
①prometheus serverのインストール
(1)ソースをダウンロード
Prometheusのダウンロードページのリンクから prometheus-2.45.2.linux-amd64.tar.gz をダウンロードしました。
# wget https://github.com/prometheus/prometheus/releases/download/v2.45.2/prometheus-2.45.2.linux-amd64.tar.gz
(2)ダウンロードしたソースを解凍する
tar xzvf prometheus-2.45.2.linux-amd64.tar.gz
(3)Prometheusの設定ファイルを編集する
cd prometheus-2.45.2.linux-amd64 vi prometheus.yml
prometheus.yml の末尾に node_exporter の情報を追記します。
- job_name: "node_exporter" static_configs: - targets: ["localhost:9100"]
(4)prometheus serverを起動する
./prometheus --config.file=prometheus.yml
③Grafanaのインストール
Grafanaは、
- cloud
- on-premises
- Enterprise
- OSS
エディションがありますが、今回はon-premisesのOSSをインストールします。
(1)Grafanaのインストール
GrafanaのOSSダウンロードページを開き
Red Hat, CentOS, RHEL, and Fedora
のコマンドを実行します。
今回は以下のコマンドを実行しました。
sudo dnf install -y https://dl.grafana.com/oss/release/grafana-10.3.1-1.x86_64.rpm
(2)grafana-serverの起動と起動確認をする
sudo systemctl start grafana-server sudo systemctl status grafana-server
(3)Grafanaにブラウザでアクセスする
http://<IPアドレス>:3000
にアクセスします。
Email or username
adminPassword
admin
でログインできます。
※初回ログイン時にパスワードの変更を求められます。
Skipも可能です。
(4)Data Sourceの設定
画面左上のトグルメニューから
- Home
- Connections
- Data sources
- Connections
を選択します。
+Add new data source
をクリックして Prometheus
を選択します。
- Name: 任意の名前
- HTTP
- Prometheus server URL:
http://<IPアドレス>:9090
- Prometheus server URL:
を入力し、 Save & Test
をクリックします。
(5)dashboardの設定
Grafanaのdashboardの設定ですが、テンプレートが公開されています。
今回は、Node Exporter Fullを使わせていただきました。
画面右上の +
をクリックして Import dashboard
を選択します。
先程エクスポートしたテンプレートをアップロードします。
- Options
- Name: 任意の名前
- Unique identifier(UID): 任意の値
- Prometheus: 先程追加した
data source
を選択
を設定し、Import
をクリックします。
表示されるダッシュボードの一部ですが、テンプレートを取り込むだけで簡単にモニタリングが出来ています。
キャプチャには入っていませんが、
- ディスク使用量
- ディスクIO
- ロードアベレージ
等もグラフ化されています。
やってよかったこと
サーバのモニタリングができるようになった
- 結構簡単にできた
- インストールが簡単
- ダッシュボードの設定もテンプレートを利用するだけ
- 拡張性が高いことがわかった
- exporterを追加することで、別のモニタリングも可能
- 対象サーバの追加も容易にできそう
- 結構簡単にできた
ディスク枯渇を事前に検知できた
- 日々ディスク使用量が増加していることが分かった
- 作業ファイルの削除漏れを見つけ、定期的に削除するようにした
- 日々ディスク使用量が増加していることが分かった
実行するJobの数を調整した
- メモリ使用量を確認し適切な実行数となるよう調整した
まとめ
環境構築からモニタリングを行えるところまでを紹介しました。
今回は、1サーバで1項目だけのモニタリングを紹介しましたが、対象サーバやモニタリング項目の追加も
容易に行えますので、気になる方はぜひ試して頂ければと思います。