Linux: データ可視化ソフト「Grafana」を無料インストールしてみた＋「Prometheus」と連携させてみた


###### 実施環境：

```Linux:Linux
[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つのダッシュボード画面にまとめたりすることができます。

[Grafana](https://grafana.com/grafana/)

今回は Linux サーバに Grafana をインストールし、 Prometheus で収集した CPU 使用状況をグラフ化してダッシュボード画面に表示することを目標とします。

### 1. インストール

 Grafana のインストールは、 CentOS の場合 rpm パッケージを利用します。
公式サイトのコマンドラインを実行することでインストールできます。
バージョンは 10.0.3-1 を使用しました。

[Download](https://grafana.com/grafana/download?platform=linux)

![WS000395.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/b5a4c0b7-cd56-8057-f282-75636d0813e6.jpeg "コマンド")

ただし、今回は root ユーザでコマンドを実行するので、 sudo は不要です。

```Linux:Linux
[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 として登録されていることがわかります。

```Linux:Linux
[root@testhost ~]# systemctl list-unit-files -t service | grep grafana
grafana-server.service                     disabled
```

 systemctl で起動します。

```Linux:Linux
[root@testhost ~]# systemctl start grafana-server.service
[root@testhost ~]# systemctl is-active grafana-server.service
active
```

 Grafana を起動できました。

### 3. ファイアウォールの穴あけ

さて、これで Grafana 自体は起動できましたが、環境によってはまだアクセスできません。
ファイアウォールの穴あけが行われていない場合があるからです。
 Grafana は 3000 番ポートを使用するため、このポートにアクセスが通るようにします。

```Linux:Linux
[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`

以下のような画面が表示されたら成功です。

![WS000396.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/9ebbcbea-4eab-37e4-43c7-250237d77698.jpeg "ログイン")

初期構築時は、ユーザ名、パスワードともに「 admin 」を指定すればログインできます。
ログインすると、パスワードの変更画面がでるので、適宜変更します。

![WS000397.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/d6d006b8-4ab5-b44e-3524-621b6f4d821f.jpeg "パスワード変更")

トップ画面が開きました。

![WS000398.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/57d68d16-b2e4-c1bb-f42c-e22169e164c0.jpeg "トップ画面")

### 5. データ取り込み( Prometheus )

このままだと使用できるデータがないので、とりあえず適当なデータを取り込んでみましょう。
今回は同一サーバ上で Prometheus を動作させているので、そのデータを取り込んでみます。
なお、 Prometheus のインストール方法については以下の過去記事を参照してください。

[Linux: システム監視ソフト「Prometheus」を無料インストールしてみた](https://qiita.com/frozencatpisces/items/01b575e34f28651f1496)

まずはメニュー画面から、「 Connections 」⇒「 Data sources 」を選択します。

![WS000401.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/ab257d87-99b8-e777-0155-229fcfcae72e.jpeg "Connections")

データソース画面に移動するので、「 Add data source 」を選択します。

![WS000402.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/0f269184-5bd5-2c33-7339-3bf7c72fe54a.jpeg "Data sources")

データソースの追加画面に移動するので、「 Prometheus 」を選択します。

![WS000403.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/865f79d1-1c59-4c21-6998-cfe221e5d1e1.jpeg "Add data source")

設定画面が開くので、「 Prometheus server URL 」だけ `http://localhost:9090` と入力して、「 Save & test 」を押します。
文字列が表示されているのでわかりにくいですが、デフォルトだと「 Prometheus server URL 」も含めほとんどの項目が入力されていないことに注意が必要です。

![WS000405.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/e05b32fa-3027-ff58-6ead-f903de7e238c.jpeg "Prometheus server URL")

![WS000407.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/8d1afb6a-23c3-55dd-46d8-36afd4349dcf.jpeg "Save & test")

成功メッセージが出力されたら完了です。

![WS000409.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/931fb541-7a79-3cc0-7207-a521e1165e6b.jpeg "Success")

### 6. ダッシュボード

さて、いよいよダッシュボードの作成に入っていきます。
先ほど取り込んだ Prometheus の情報を表示してみましょう。

メニューから「 Dashboards 」を選択します。

![WS000410.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/91ac940f-ef79-bb46-78d3-0e302f62e060.jpeg "Dashboards")

ダッシュボード画面に移動するので、「 New 」⇒「 New Dashboard 」を選択します。

![WS000412.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/2ee320f5-223a-c08b-6507-fe2433af88cc.jpeg "New Dashboards")

グラフを追加するため、「 Add visualization 」を押します。

![WS000413.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/9f7e83b6-3763-69a3-8425-9ff8a3fa65ff.jpeg "Add visualization")

グラフに使用するデータソースの選択画面が出るので、「 Prometheus 」を選択します。

![WS000414.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/6125d691-3830-fee7-66f6-ddde897c3f32.jpeg "Select data source")

これでパネルを1つダッシュボードに追加することができました。
このパネルを編集していきます。

![WS000418.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/d807ec2b-9e51-22c8-e867-f9a2b0193920.jpeg "Panel")

まずはクエリの作成ですが、 Grafana はクエリ文を書かなくとも GUI で検索条件や集計方法などを選択できます。
左下で、「 Query 」⇒「 Metric 」⇒「 node_cpu_seconds_total 」を選択します。

![WS000416.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/a6493571-e00f-1ace-fe22-17c296040dca.jpeg "Query")

次に、パネルの状態を更新します。
左上で、更新ボタンを押すと、グラフが表示されます。
縦軸や横軸などは今回変更していないので、デフォルトで適宜指定されています。

![WS000417.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/1e9e2bfc-2111-7443-ba4b-dd8565992af3.jpeg "Graph")

最後に、右上の「 Save 」ボタンを押してダッシュボードを保存します。

![WS000420.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/ec2fbfcd-7efc-54aa-8169-18403da52ab7.jpeg "Save")

保存設定の編集画面が開きますが、今回はデフォルトのまま「 Save 」を押します。

![WS000421.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/b6cb8fb1-fe37-a8a6-3932-b6cae180c88e.jpeg "Save dashboard")

これで、ダッシュボードを作成できました。

![WS000422.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/386e0e66-0df6-91c7-1440-ad24e3f702b7.jpeg "完成")

### 7. 備考

今回は1から作成したダッシュボードですが、実は公式サイトで多種多様なテンプレートが公開されています。
これらをうまく活用すれば、より効率的に可視化を行うことが可能です。

[Dashboards](https://grafana.com/grafana/dashboards/?plcmt=footer)

公式サイトのドキュメントも充実しているので、困ったことがあったら調べてみてもよいかと思います。

[Docs](https://grafana.com/docs/?plcmt=footer)