OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

Grafana 10.2.3をRocky Linux 8.8へインストールしてPrometheusをデータソースとしたグラフを作成

カテゴリ:OSSセットアップ | ソフトウェア:Grafana | タグ:
最終更新日:2024-02-04 | 公開日:2024-01-16

目次

概要

 我が家のRaspberry Pi 4B(以下ラズパイ4)にPrometheusとNode Exporterをインストールしてシステムのメトリクス情報を収集するようにしています。 収集した情報をカッコ良くグラフ化して見ることができないか調べてみたところ、GrafanaがPrometheusとの親和性も良さそうだったので 試しにインストールして動作確認してみました。 構成としてはラズパイ4にPrometheusとNode Exporterが既にインストール済みで稼働中となります。 本ページはこのラズパイ4に追加でGrafanaをインストールして、Prometheusからメトリクス情報を取得する時の手順となっています。 インストールと最低限の初期設定はGrafanaの公式ページを見ながら実施しました。 Grafana上でPrometheusのデータソースを作成してダッシュボードにグラフを表示するところは実際に画面を見ながら直感的にやってみたので、 設定の導線として正しいのかやや不安がありますが、正常にグラフ化できたので間違ってはいないと思います。

 なお、我が家にはラズパイ4Bが4台、その他Rock 4+/5B/5Aといった計7台のSBC(Single Board Computer)があるので、 最終的には全SBCから取得したメトリクスをGrafanaのダッシュボードに表示して健全に稼働しているか可視化できるようにしたいと考えています。

構成

サーバ構成

ハードウェア

Raspberry Pi 4 Model B 4GB

OS

Rocky Linux release 8.8 (Green Obsidian) aarch64

ソフトウェア・パッケージ

  • grafana-10.2.3-1.aarch64.rpm
  • prometheus-2.48.1.linux-arm64.tar.gz
  • node_exporter-1.7.0.linux-arm64.tar.gz

操作端末構成

OS

Windows 11 Pro 23H2

ソフトウェア

  • Microsoft Edge バージョン 120.0.2210.133 (公式ビルド) (64 ビット)

環境構築

インストール

GrafanaのRPMパッケージのダウンロード

 Grafanaのインストールに必要なRPMパッケージは、公式サイトからダウンロードできます。 公式サイト上でバージョン、エディション、OSを指定すると、ダウンロード元のURLが表示されますので、wgetでダウンロードします。

# cd /media/rpms/
# wget https://dl.grafana.com/oss/release/grafana-10.2.3-1.aarch64.rpm
--2024-01-14 17:41:18--  https://dl.grafana.com/oss/release/grafana-10.2.3-1.aarch64.rpm
Resolving dl.grafana.com (dl.grafana.com)... 151.101.198.217, 2a04:4e42:87::729
Connecting to dl.grafana.com (dl.grafana.com)|151.101.198.217|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 99925223 (95M) [application/octet-stream]
Saving to: ‘grafana-10.2.3-1.aarch64.rpm’

grafana-10.2.3-1.aarch64.rpm  100%[=================================================>]  95.30M  21.2MB/s    in 5.3s

2024-01-14 17:41:25 (18.1 MB/s) - ‘grafana-10.2.3-1.aarch64.rpm’ saved [99925223/99925223]

# ls -l grafana-10.2.3-1.aarch64.rpm
-rw-r--r--. 1 root root 99925223 Dec 19 20:12 grafana-10.2.3-1.aarch64.rpm

Grafanaのインストール

 ダウンロードしたファイルをdnfコマンドでインストールします。

# dnf -y install ./grafana-10.2.3-1.aarch64.rpm
Last metadata expiration check: 0:50:26 ago on Sun 14 Jan 2024 04:56:34 PM JST.
Dependencies resolved.
========================================================================================================================
 Package                              Architecture         Version                      Repository                 Size
========================================================================================================================
Installing:
 grafana                              aarch64              10.2.3-1                     @commandline               95 M
Installing dependencies:
 dejavu-fonts-common                  noarch               2.35-7.el8                   baseos                     73 k
 dejavu-sans-fonts                    noarch               2.35-7.el8                   baseos                    1.5 M
 fontconfig                           aarch64              2.13.1-4.el8                 baseos                    271 k
 fontpackages-filesystem              noarch               1.44-22.el8                  baseos                     15 k
 freetype                             aarch64              2.9.1-9.el8                  baseos                    369 k
 libpng                               aarch64              2:1.6.34-5.el8               baseos                    118 k

Transaction Summary
========================================================================================================================
Install  7 Packages

Total size: 98 M
Total download size: 2.3 M
Installed size: 373 M
Downloading Packages:
(1/6): dejavu-fonts-common-2.35-7.el8.noarch.rpm                                        269 kB/s |  73 kB     00:00
(2/6): fontpackages-filesystem-1.44-22.el8.noarch.rpm                                   357 kB/s |  15 kB     00:00
(3/6): fontconfig-2.13.1-4.el8.aarch64.rpm                                              692 kB/s | 271 kB     00:00
(4/6): libpng-1.6.34-5.el8.aarch64.rpm                                                  1.2 MB/s | 118 kB     00:00
(5/6): freetype-2.9.1-9.el8.aarch64.rpm                                                 1.7 MB/s | 369 kB     00:00
(6/6): dejavu-sans-fonts-2.35-7.el8.noarch.rpm                                          1.9 MB/s | 1.5 MB     00:00
------------------------------------------------------------------------------------------------------------------------
Total                                                                                   1.6 MB/s | 2.3 MB     00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                1/1
  Installing       : fontpackages-filesystem-1.44-22.el8.noarch                                                     1/7
  Installing       : dejavu-fonts-common-2.35-7.el8.noarch                                                          2/7
  Installing       : dejavu-sans-fonts-2.35-7.el8.noarch                                                            3/7
  Installing       : libpng-2:1.6.34-5.el8.aarch64                                                                  4/7
  Installing       : freetype-2.9.1-9.el8.aarch64                                                                   5/7
  Installing       : fontconfig-2.13.1-4.el8.aarch64                                                                6/7
  Running scriptlet: fontconfig-2.13.1-4.el8.aarch64                                                                6/7
  Installing       : grafana-10.2.3-1.aarch64                                                                       7/7
  Running scriptlet: grafana-10.2.3-1.aarch64                                                                       7/7
### NOT starting on installation, please execute the following statements to configure grafana to start automatically using systemd
 sudo /bin/systemctl daemon-reload
 sudo /bin/systemctl enable grafana-server.service
### You can start grafana-server by executing
 sudo /bin/systemctl start grafana-server.service

POSTTRANS: Running script

  Running scriptlet: fontconfig-2.13.1-4.el8.aarch64                                                                7/7
  Verifying        : dejavu-fonts-common-2.35-7.el8.noarch                                                          1/7
  Verifying        : dejavu-sans-fonts-2.35-7.el8.noarch                                                            2/7
  Verifying        : fontconfig-2.13.1-4.el8.aarch64                                                                3/7
  Verifying        : fontpackages-filesystem-1.44-22.el8.noarch                                                     4/7
  Verifying        : freetype-2.9.1-9.el8.aarch64                                                                   5/7
  Verifying        : libpng-2:1.6.34-5.el8.aarch64                                                                  6/7
  Verifying        : grafana-10.2.3-1.aarch64                                                                       7/7

Installed:
  dejavu-fonts-common-2.35-7.el8.noarch        dejavu-sans-fonts-2.35-7.el8.noarch   fontconfig-2.13.1-4.el8.aarch64
  fontpackages-filesystem-1.44-22.el8.noarch   freetype-2.9.1-9.el8.aarch64          grafana-10.2.3-1.aarch64
  libpng-2:1.6.34-5.el8.aarch64

Complete!

設定

Grafanaの起動と自動起動設定

 インストール直後はGrafanaは停止状態となっており、自動起動の設定も無効になっています。 Linuxの起動に合わせてSystemdで自動起動するように設定を変更しつつ、Grafanaを起動します。 Systemdのサービス名は grafana-server となっています。 起動が完了したらプロセスが存在しているかも確認します。プロセス名は grafana です。

# systemctl status grafana-server
● grafana-server.service - Grafana instance
   Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled; vendor preset: disabled) ←自動起動無効
   Active: inactive (dead) ←停止状態
     Docs: http://docs.grafana.org

Jan 14 20:53:42 rpi4b01 systemd[1]: /usr/lib/systemd/system/grafana-server.service:28: Unknown lvalue 'ProtectClock' in>
Jan 14 20:53:42 rpi4b01 systemd[1]: /usr/lib/systemd/system/grafana-server.service:31: Unknown lvalue 'ProtectHostname'>
Jan 14 20:53:42 rpi4b01 systemd[1]: /usr/lib/systemd/system/grafana-server.service:32: Unknown lvalue 'ProtectKernelLog>
Jan 14 20:53:42 rpi4b01 systemd[1]: /usr/lib/systemd/system/grafana-server.service:35: Unknown lvalue 'ProtectProc' in >
# systemctl --now enable grafana-server
Synchronizing state of grafana-server.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable grafana-server
Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /usr/lib/systemd/system/grafana-server.service.
# systemctl status grafana-server
● grafana-server.service - Grafana instance
   Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; enabled; vendor preset: disabled) ←自動起動有効
   Active: active (running) since Sun 2024-01-14 20:55:20 JST; 8s ago ←起動状態
     Docs: http://docs.grafana.org
 Main PID: 12011 (grafana)
    Tasks: 17 (limit: 23840)
   CGroup: /system.slice/grafana-server.service
           mq12011 /usr/share/grafana/bin/grafana server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/g>

Jan 14 20:55:20 rpi4b01 systemd[1]: Started Grafana instance.
Jan 14 20:55:20 rpi4b01 grafana[12011]: logger=ngalert.state.manager t=2024-01-14T20:55:20.155353609+09:00 level=info m>
Jan 14 20:55:20 rpi4b01 grafana[12011]: logger=ngalert.multiorg.alertmanager t=2024-01-14T20:55:20.179935464+09:00 leve>
Jan 14 20:55:20 rpi4b01 grafana[12011]: logger=http.server t=2024-01-14T20:55:20.198039255+09:00 level=info msg="HTTP S>
Jan 14 20:55:20 rpi4b01 grafana[12011]: logger=sqlstore.transactions t=2024-01-14T20:55:20.200222986+09:00 level=info m>
Jan 14 20:55:20 rpi4b01 grafana[12011]: logger=ngalert.state.manager t=2024-01-14T20:55:20.273722163+09:00 level=info m>
Jan 14 20:55:20 rpi4b01 grafana[12011]: logger=ngalert.scheduler t=2024-01-14T20:55:20.274594418+09:00 level=info msg=">
Jan 14 20:55:20 rpi4b01 grafana[12011]: logger=ticker t=2024-01-14T20:55:20.274930935+09:00 level=info msg=starting fir>
Jan 14 20:55:20 rpi4b01 grafana[12011]: logger=grafana.update.checker t=2024-01-14T20:55:20.326898726+09:00 level=info >
Jan 14 20:55:20 rpi4b01 grafana[12011]: logger=plugins.update.checker t=2024-01-14T20:55:20.476583161+09:00 level=info >
# ps -ef | grep grafana | grep -v grep
grafana    12011       1  0 Jan14 ?        00:00:48 /usr/share/grafana/bin/grafana server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-server.pid --packaging=rpm cfg:default.paths.logs=/var/log/grafana cfg:default.paths.data=/var/lib/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins cfg:default.paths.provisioning=/etc/grafana/provisioning

Firewalldの設定

 Grafana起動後にGrafanaがリッスンしているポートをssコマンドを使って調べると3000番を使用していることが分かります。 インストールしただけだと以降の手順でPCのブラウザからGrafanaへアクセスしようとするとエラーになったので、 ファイアウォールの設定でGrafanaに対する外部からの通信を許可します。 ポート番号 3000 を指定して通信許可しても良いですし、Grafanaの場合 grafana というサービス名を指定することもできます。 今回は grafana というサービス名を指定して許可しています。

# ss -tanp | grep grafana | grep LISTEN
LISTEN 0      4096                        *:3000                       *:*     users:(("grafana",pid=12011,fd=15))      

# firewall-cmd --get-active-zones
public
  interfaces: eth0
# firewall-cmd --list-all --zone=public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: cockpit dhcpv6-client ssh
  ports: 22/tcp
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
# firewall-cmd --add-service=grafana --zone=public --permanent
success
# firewall-cmd --reload
success
# firewall-cmd --list-all --zone=public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: cockpit dhcpv6-client grafana ssh ←grafanaが追加された
  ports: 22/tcp
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

ブラウザからGrafanaインスタンスへログイン

 細かい設定は色々ありますが、上記だけでも最低限Grafanaを利用する事ができるようになりましたので、 Windows PCのブラウザからGrafanaインスタンスへアクセスしてみます。 http://サーバのIPアドレス:3000 でアクセスすると、Grafanaのログイン画面が表示されます。 初期ユーザとしては admin ユーザが利用できるようになっています。 adminユーザの初期パスワードは admin です。 [Email or username] と [Password] を入力して [log in] ボタンをクリックします。

初期パスワードの変更

 ログインに成功するとパスワードの変更画面画面が表示されます。 新しいパスワードを2回入力して [Submit] ボタンをクリックします。

Prometheus用のデータソースの作成

 ログインに成功するとGrafanaの「Home」画面が表示されます。 Prometheusで収集している情報をダッシュボードで表示できるようにするために、 まずはPrometheus用のデータソースを作成します。 画面左上のハンバーガーメニューをクリックします。

 メニューが表示されるので、[Connections] の中の [Add new connection] をクリックします。

 「Add new connection」画面が表示されたら、[Prometheus] をクリックします。

 「Prometheus Data Source」画面が表示されたら、画面右上の [Add new data source] ボタンをクリックします。

 prometheusの「Data source」設定画面が表示されます。

 画面を少し下にスクロールして [Connection] 項目の [Prometheus server URL] を入力します。 今回はGrafanaが起動しているのと同じサーバ上で稼働しているPrometheusへポート9090で接続しますので、 『http://localhost:9090』を入力しています。

 続いて画面一番下の [Save & test] ボタンをクリックします。 私の環境の場合、その他の設定は変更しなくても良さそうだったので、デフォルトのままにしましたが、 接続するPrometheusに合わせて適宜設定してください。

 GrafanaからPrometheusへの接続に成功すると画面一番下に「Successfully queried the Prometheus API.」と表示されます。

Prometheusから取得した情報を使ってダッシュボードにグラフを追加

 データソースの作成に成功したら続いてPrometheusから取得した情報を元にグラフを作成してみます。 ダッシュボードの作成は次回ゆっくりやってみようと思うので、Prometheusから情報を取得できていて、 グラフ化できることを確認します。 画面左上のハンバーガーメニューをクリックし、メニューの中から [Connections] 項目の [Data sources] をクリックします。

 「Data sources」画面が表示されたら、作成したprometheusのデータソースが表示されるので、[Build a dashboard] をクリックします。

 「New dashboard」画面が表示されたら、[+ Add visualization] ボタンをクリックします。

 「Select data source」画面が表示されたら [prometheus] をクリックします。

 「Edit panel」画面が表示されます。 Prometheusに対するクエリを作成していきますが、動作確認的にメモリ使用率を表示してみたいと思うので クエリ画面の右上辺りにある [Builder | Code] の切り替えスイッチをクリックして [Code] を選択した状態にします。

 入力フォームが変わり、クエリのコードを直接入力できるようになるので、 事前にPrometheus上で確認しておいたメモリ使用率取得用のコードを入力します。 今回の例では以下のように入力しています。 ※これがメモリ使用率という意味で正確かどうかは一旦置いておきます。

 (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100

 続いて [Run queries] ボタンをクリックすると、画面左上にクエリでPrometheusから取得した情報を元にグラフが表示されます。

 画面右の [Panel options] の [Title] に作成するパネルのタイトルを入力します。 今回試した環境ではラズパイ4上でPrometheusとGrafanaを稼働させていて、このラズパイ4からNode Exporterでシステムのメトリクス情報を取得しているので、 『Raspberry Pi 4B #1 Memory Usage Rate』と入力しています。(動作確認しているだけなので何でも良いですが)

 続いて画面右のオプションリストを下にスクロールすると [Standard options] の [Unit] という項目がありますので、 [Percent (0-100)]を選択すると、パネル上のメモリ使用率の単位に%が表示されて分かりやすくなります。

 画面右上の [Apply] ボタンをクリックします。

 パネルの編集が終わりダッシュボード上にパネルが1つ作成されます。 こんな感じでダッシュボード上にパネルを作成して自分好みのダッシュボードを作成していくのだと思いますが、 今回はGrafanaからPrometheusのデータを取得できているかを確認するところまでが目的だったので、 作成したダッシュボードは保存せずに破棄して終わりにします。。

参考にしたサイト