実施環境:
[root@testhost ~]# uname -a
Linux testhost 4.18.0-448.el8.x86_64 #1 SMP Wed Jan 18 15:02:46 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
[root@testhost ~]# cat /etc/redhat-release
CentOS Stream release 8
[root@testhost ~]# yum list installed | grep grafana
grafana-enterprise.x86_64 10.0.3-1 @@commandline
0. 概要
世の中には様々なデータ収集ツールがあります。
ですが、それで必要なデータを収集できても、欲しい表やグラフが作れなければ宝の持ち腐れです。
Grafana (グラファナ)は、データの可視化に特化したオープンソースのソフトウェアです。
Prometheus などのデータ収集ツールで収集した多種多様なデータを取り込んで、グラフや表を作成したり、それらの表やグラフを1つのダッシュボード画面にまとめたりすることができます。
今回は Linux サーバに Grafana をインストールし、 Prometheus で収集した CPU 使用状況をグラフ化してダッシュボード画面に表示することを目標とします。
1. インストール
Grafana のインストールは、 CentOS の場合 rpm パッケージを利用します。
公式サイトのコマンドラインを実行することでインストールできます。
バージョンは 10.0.3-1 を使用しました。
ただし、今回は root ユーザでコマンドを実行するので、 sudo は不要です。
[root@testhost ~]# yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-10.0.3-1.x86_64.rpm
メタデータの期限切れの最終確認: 1 day, 13:31:45 時間前の 2023年08月15日 20時14分56秒 に実施しました。
grafana-enterprise-10.0.3-1.x86_64.rpm 13 MB/s | 84 MB 00:06
依存関係が解決しました。
(省略)
インストール済み:
grafana-enterprise-10.0.3-1.x86_64
完了しました!
[root@testhost ~]# yum list installed | grep grafana
grafana-enterprise.x86_64 10.0.3-1 @@commandline
Grafana をインストールできました。
2. 起動
Grafana は、 CentOS の場合 systemctl を用いて制御することが可能です。
実際インストール後に確認してみると、 service として登録されていることがわかります。
[root@testhost ~]# systemctl list-unit-files -t service | grep grafana
grafana-server.service disabled
systemctl で起動します。
[root@testhost ~]# systemctl start grafana-server.service
[root@testhost ~]# systemctl is-active grafana-server.service
active
Grafana を起動できました。
3. ファイアウォールの穴あけ
さて、これで Grafana 自体は起動できましたが、環境によってはまだアクセスできません。
ファイアウォールの穴あけが行われていない場合があるからです。
Grafana は 3000 番ポートを使用するため、このポートにアクセスが通るようにします。
[root@testhost ~]# systemctl is-active firewalld
active
[root@testhost ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s25
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@testhost ~]# firewall-cmd --zone=public --add-port=3000/tcp --permanent
success
[root@testhost ~]# firewall-cmd --reload
success
[root@testhost ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s25
sources:
services: cockpit dhcpv6-client ssh
ports: 3000/tcp
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@testhost ~]#
ファイアウォールに穴が開き、 Grafana にアクセスできるようになりました。
4. アクセス
では早速、 Grafana にアクセスしてみます。
ブラウザを開き、以下の URL に接続します。
http://<起動したサーバのIPアドレス>:3000
以下のような画面が表示されたら成功です。
初期構築時は、ユーザ名、パスワードともに「 admin 」を指定すればログインできます。
ログインすると、パスワードの変更画面がでるので、適宜変更します。
トップ画面が開きました。
5. データ取り込み( Prometheus )
このままだと使用できるデータがないので、とりあえず適当なデータを取り込んでみましょう。
今回は同一サーバ上で Prometheus を動作させているので、そのデータを取り込んでみます。
なお、 Prometheus のインストール方法については以下の過去記事を参照してください。
Linux: システム監視ソフト「Prometheus」を無料インストールしてみた
まずはメニュー画面から、「 Connections 」⇒「 Data sources 」を選択します。
データソース画面に移動するので、「 Add data source 」を選択します。
データソースの追加画面に移動するので、「 Prometheus 」を選択します。
設定画面が開くので、「 Prometheus server URL 」だけ http://localhost:9090
と入力して、「 Save & test 」を押します。
文字列が表示されているのでわかりにくいですが、デフォルトだと「 Prometheus server URL 」も含めほとんどの項目が入力されていないことに注意が必要です。
成功メッセージが出力されたら完了です。
6. ダッシュボード
さて、いよいよダッシュボードの作成に入っていきます。
先ほど取り込んだ Prometheus の情報を表示してみましょう。
メニューから「 Dashboards 」を選択します。
ダッシュボード画面に移動するので、「 New 」⇒「 New Dashboard 」を選択します。
グラフを追加するため、「 Add visualization 」を押します。
グラフに使用するデータソースの選択画面が出るので、「 Prometheus 」を選択します。
これでパネルを1つダッシュボードに追加することができました。
このパネルを編集していきます。
まずはクエリの作成ですが、 Grafana はクエリ文を書かなくとも GUI で検索条件や集計方法などを選択できます。
左下で、「 Query 」⇒「 Metric 」⇒「 node_cpu_seconds_total 」を選択します。
次に、パネルの状態を更新します。
左上で、更新ボタンを押すと、グラフが表示されます。
縦軸や横軸などは今回変更していないので、デフォルトで適宜指定されています。
最後に、右上の「 Save 」ボタンを押してダッシュボードを保存します。
保存設定の編集画面が開きますが、今回はデフォルトのまま「 Save 」を押します。
これで、ダッシュボードを作成できました。
7. 備考
今回は1から作成したダッシュボードですが、実は公式サイトで多種多様なテンプレートが公開されています。
これらをうまく活用すれば、より効率的に可視化を行うことが可能です。
公式サイトのドキュメントも充実しているので、困ったことがあったら調べてみてもよいかと思います。