RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

非インフラエンジニアがPrometheusとGrafanaで簡単サーバモニタリング

概要

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 からデータを取得し、可視化を行います。

インストール

順番は前後しますが、

  1. ②exporter
  2. ①prometheus server
  3. ③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
    admin

  • Password
    admin

でログインできます。

※初回ログイン時にパスワードの変更を求められます。
 Skipも可能です。

(4)Data Sourceの設定

画面左上のトグルメニューから

  • Home
    • Connections
      • Data sources

を選択します。

+Add new data source をクリックして Prometheus を選択します。

  • Name: 任意の名前
  • HTTP
    • Prometheus server URL: http://<IPアドレス>:9090

を入力し、 Save & Test をクリックします。

(5)dashboardの設定

Grafanaのdashboardの設定ですが、テンプレートが公開されています。

今回は、Node Exporter Fullを使わせていただきました。

画面右上の  をクリックして Import dashboard を選択します。

先程エクスポートしたテンプレートをアップロードします。

  • Options
    • Name: 任意の名前
    • Unique identifier(UID): 任意の値
    • Prometheus: 先程追加した data source を選択

を設定し、Import をクリックします。

表示されるダッシュボードの一部ですが、テンプレートを取り込むだけで簡単にモニタリングが出来ています。

キャプチャには入っていませんが、

等もグラフ化されています。

やってよかったこと

  • サーバのモニタリングができるようになった

    • 結構簡単にできた
      • インストールが簡単
      • ダッシュボードの設定もテンプレートを利用するだけ
    • 拡張性が高いことがわかった
      • exporterを追加することで、別のモニタリングも可能
      • 対象サーバの追加も容易にできそう
  • ディスク枯渇を事前に検知できた

    • 日々ディスク使用量が増加していることが分かった
      • 作業ファイルの削除漏れを見つけ、定期的に削除するようにした
  • 実行するJobの数を調整した

    • メモリ使用量を確認し適切な実行数となるよう調整した

まとめ

環境構築からモニタリングを行えるところまでを紹介しました。

今回は、1サーバで1項目だけのモニタリングを紹介しましたが、対象サーバやモニタリング項目の追加も
容易に行えますので、気になる方はぜひ試して頂ければと思います。

Copyright © RAKUS Co., Ltd. All rights reserved.