地方在住IT系ニート

bkds

Grafanaのメモ

はじめに

Grafanaとは、OSSでダッシュボードを作成できるツールです。
様々なデータを取得し、情報をダッシュボードにまとめることができます。

今回は、下記の情報をダッシュボードにまとめてみます。

  • ディスク使用率
  • メモリ使用率
  • CPU使用率

サーバの情報を取得するために、PrometheusとExporterを利用します。
PrometheusがExporterにアクセスし、Exporterでメトリクスを取得します。

Exporterのインストール

下記コマンドでnode exporterをダウンロードし、起動します。
exporterはポート9100で起動します。

# node exporterのダウンロード
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-arm64.tar.gz

# 解凍
tar zxvf node_exporter-1.7.0.linux-arm64.tar.gz

# ディレクトリに移動
cd ../node_exporter-1.7.0.linux-arm64/

# portを指定して起動
./node_exporter

Prometheusのインストール

下記コマンドでprometheusをダウンロードし、起動します。
prometheusはポート9090で起動します。

# prometheusのダウンロード
wget https://github.com/prometheus/prometheus/releases/download/v2.49.1/prometheus-2.49.1.linux-arm64.tar.gz

# 解凍
tar zxvf prometheus-2.49.1.linux-arm64.tar.gz

# ディレクトリに移動
cd prometheus-2.49.1.linux-arm64/

# exporterを追加
vim prometheus.yml

# 起動
./prometheus

prometheus.ymlを修正し、node exporterを追加します。

scrape_configs:
  - job_name: "prometheus"
    static_configs:
    # xxx.xxx.xxx.xxxはprometheusのIPアドレスです
      - targets: ["xxx.xxx.xxx.xxx:9090"]
  - job_name: "node"
    static_configs:
    # yyy.yyy.yyy.yyyはexporterのIPアドレスです
      - targets: ["xxx.xxx.xxx.xxx:9100"]

Grafanaのインストール

下記コマンドでgrafanaをインストールし、起動します。
grafanaはポート3000で起動します。

wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor > /etc/apt/keyrings/grafana.gpg

echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | tee /etc/apt/sources.list.d/grafana.list

apt install grafana

ダッシュボードの作成

GrafanaのDashboardsの右上にあるNewボタンから新しいダッシュボードを作成します。

new_dashboard

次に、作成したダッシュボードからAdd Visualizationから新しいパネルを追加します。

Disk容量

disk_query

Data sourceには、prometheusを指定します。
Queryは下記を指定します。

(node_filesystem_size_bytes - node_filesystem_avail_bytes) / node_filesystem_size_bytes * 100

node_filesystem_size_bytesは、利用中の容量。node_filesystem_avail_bytesは、利用可能な容量です。

disk_result

上記のQueryでRun queriesを実行するとグラフを確認できます。

CPU容量

Disk容量と同様に下記のQueryで結果が得られます。

avg(rate(node_cpu_seconds_total{mode="idle"}[1m])) * -100 + 100

cpu_result

Memory容量

Disk容量と同様に下記のQueryで結果が得られます。

(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100

memory_result

にほんブログ村 IT技術ブログ IT技術メモへPVアクセスランキング にほんブログ村