OSSのvisualization toolのGrafanaにチャレンジしました

1.概要

OSSのvisualization toolのGrafanaにチャレンジしました。GrafanaはDatabaseのデータをグラフィカルに表示することで刻一刻とデータが蓄積されている状況をわかりやすい形に変えることができます。今回はDocker環境にGrafanaとMariadbを導入後、Mariadbにテストデータを追加し、その結果をGrafanaで表示することを記述します。

2.詳細

(1) Docker環境にGrafanaとMariadbのコンテナを作成

(a) docker, docker-composeの導入
本ブログのredmine(05/20)を参照願います

(b) docker-compose.yml作成
Grafanaは最新版(latest)、Mariadbは10を利用します。
port番号は標準、Mariadbはpasswordと設定しました。

version: '3.1'
services:
  grafana:
    image: grafana/grafana:latest
    ports:
      - 3000:3000
    tty: true
  mariadb:
    image: mariadb:10
    ports:
      - 3306:3306
    environment:
      - MARIADB_ROOT_PASSWORD=password
    tty: true

(c) container起動
$ docker-compose up -d
$ docker ps
grafana/grafana:latestとgrafana_mariadbが動作していることを確認します。

(2) Mariadbにテストデータ追加

(a) Mariadbコンテナにlogin
$ docker ps
MariadbのCONTAINER IDを調べます。ここでは、1234567890abとします。
$ docker exec -it 1234567890ab /bin/bash
でコンテナにloginします。
これ以降はコンテナにlogin状態で作業します

(b) Mariadbにlogin
mysql -u root -p
Enter password:
passwordと入力
MariaDB [(none)]> となります

(c) user作成
MariaDB [(none)]> create user 'username'@'%' identified by 'password';
MariaDB [(none)]> grant all on *.* to 'username'@'%';
MariaDB [(none)]> exit

(d) database作成
作成したuserでloginして作業します
mysql -u username -p
Enter password:
passwordと入力
MariaDB [(none)]> となります
MariaDB [(none)]> create database grafana_database;
MariaDB [(none)]> use grafana_database;

(e) table作成
MariaDB [grafana_database]> create table sample_table (
    ->     id varchar(10),
    ->     data_time timestamp,
    ->     data_value int(10),
    ->     primary key(id, data_time)
    -> );

(f) insert data
下記コマンドを実行します
delete from sample_table;
insert into sample_table values ('1001', '2023-10-01 00:00:00', 1000);
insert into sample_table values ('1001', '2023-10-01 01:00:00', 1010);
insert into sample_table values ('1001', '2023-10-01 02:00:00', 1020);
insert into sample_table values ('1001', '2023-10-01 03:00:00', 1030);
insert into sample_table values ('1001', '2023-10-01 04:00:00', 1040);
insert into sample_table values ('1001', '2023-10-01 05:00:00', 1050);
insert into sample_table values ('1001', '2023-10-01 06:00:00', 1060);
insert into sample_table values ('1001', '2023-10-01 07:00:00', 1070);
insert into sample_table values ('1001', '2023-10-01 08:00:00', 1080);
insert into sample_table values ('1001', '2023-10-01 09:00:00', 1090);
insert into sample_table values ('1001', '2023-10-01 10:00:00', 1100);
insert into sample_table values ('1001', '2023-10-01 11:00:00', 1110);
insert into sample_table values ('1001', '2023-10-01 12:00:00', 1120);

insert into sample_table values ('1002', '2023-10-01 00:00:00', 1120);
insert into sample_table values ('1002', '2023-10-01 01:00:00', 1110);
insert into sample_table values ('1002', '2023-10-01 02:00:00', 1100);
insert into sample_table values ('1002', '2023-10-01 03:00:00', 1090);
insert into sample_table values ('1002', '2023-10-01 04:00:00', 1080);
insert into sample_table values ('1002', '2023-10-01 05:00:00', 1070);
insert into sample_table values ('1002', '2023-10-01 06:00:00', 1060);
insert into sample_table values ('1002', '2023-10-01 07:00:00', 1050);
insert into sample_table values ('1002', '2023-10-01 08:00:00', 1040);
insert into sample_table values ('1002', '2023-10-01 09:00:00', 1030);
insert into sample_table values ('1002', '2023-10-01 10:00:00', 1020);
insert into sample_table values ('1002', '2023-10-01 11:00:00', 1010);
insert into sample_table values ('1002', '2023-10-01 12:00:00', 1000);

(g) data確認
select * from sample_table;
で入力内容を確認します

(3) GrafanaにMariadbのテストデータを表示

(a) Grafanaへlogin
Firefoxを利用して、grafanaへloginします。
http://localhost:3000
Username=admin, Password=adminでloginします。
Password変更要求があるので、変更します

(b) Mariadbのip address調査
まず、Mariadbのip-addressを調べます
$ docker ps
MariadbのCONTAINER IDを調べます。ここでは、1234567890ab
$ docker exec -it 1234567890ab /bin/bash
でコンテナにloginします。
$ ip a
でip addressを調べます。
ここでは、172.19.0.3とします。

(c) Data Source設定
左上の3本線(Toggle Menu)でConnectionsを選択
ConnectionsでData sourcesを選択
Add data sourceを選択
SQLのMySQLを選択
下記設定を実施
Name=MySQL1
Host=172.19.0.3:3306
Database=grafana_database
User=username
Password=password
Save&Testを選択
Database Connection OKとなります

(d) dashboard設定
右上の方のBuild a dashboardを選択
Start your new dashboard by adding a visualizationでAdd visualizationを選択
MySQL1を選択
A(MySQL1)で、builderをcodeへ変更、下記コードを入力
SELECT
  data_time,
  id AS metric,
  data_value
FROM sample_table
WHERE
  data_time and id = '1001'
ORDER BY data_time

Run queryを選択
Data outside time rangeでZoom to dataを選択
グラフが表示されます
+ Queryを選択

B(MySQL1)で、builderをcodeへ変更、下記コードを入力
SELECT
  data_time,
  id AS metric,
  data_value
FROM sample_table
WHERE
  data_time and id = '1002'
ORDER BY data_time

Run queryを選択
グラフが追加表示されます

3.所見

DatabaseとしてMariadbを選択した理由は、MySQLとの差異を確認したかったことがありました。PostgreSQLを利用しても同じように操作することができます。Grafanaはグラフ表示をするために内部で専用のSQLを利用します。今回の勉強内容を基盤にして、データ分析の仕事に活用する予定です。

4.追加

(1) Boston Housingのcsvデータを利用してgrafaでgraph表示にチャレンジ

Boston HousingのcsvデータをDownloadして、Databaseに登録の上、Grafanaで表示することを実施しました。Boston Housingには日時などの基準となるデータがないので、Databaseにimportするときにserialなidをつけて見たのですが、うまく行きません。Grafanaは日時を横軸に取ることを前提としているようです。

(2) Grafanaを利用してミリセカンド単位のデータ処理が可能であるか調べました

ミリセカンド単位の処理をGrafanaで処理をするためには、日付時刻のフォーマットを以下のように設定する必要があるとわかりました。
YYYY-MM-DD HH:mm:ss.xxx
具体的な例を記述すると
2024-08-18 08:10:30.123
123はミリ秒です。

次にデータベースに設定できるかを検討しました。
どうやら、timestamp形式を利用することでミリセカンドを保存できます。

(3) grafanaとprometheusを使ってみました

構築に利用する環境はubuntu-20.04.6で、ubuntu標準のdockerを利用します。
コンテナを作成するために、docker-compose.ymlを作成します。

version: '3.5'
services:
  prometheus:
    container_name: prometheus
    image: prom/prometheus
  grafana:
    container_name: grafana
    image: grafana/grafana
    ports:
      - 3000:3000

コンテナを起動します

$ docker-compose up -d

ブラウザ(Firefox)からgrafanaのコンテナにアクセスします。
コンテナ作成に少し時間が必要です。1〜2分間ほど待ちましょう。

http://localhost:3000

Welcome to Grafanaが表示されます。
Grafanaの初期ログインは、User=admin、Password=adminです。
ログイン後、新しいパスワードを設定します。

Prometheusを接続するために、Connections => Data sources と選択して、
Add data sourceをクリック。先頭に表示されているPrometheusをクリックします
Connectionの欄に http://prometheus:9090 を入力して、最下行のSave&Testをクリック。
Successfully queried the Prometheus APIが表示されるとOKです。

先頭行に戻り、SettingsタブからDashboardsタブに移り、Prometheus 2.0 StatsをImport。
左側のペインのDashboardsを選択すると、Prometheus 2.0 Statsが表示されています。
これをクリックして、GrafanaのDashboardを表示できます。

参考

[外部サイト参照]
Grafana: The open observability platform | Grafana Labs
Grafana
mariadb

コメント

過去30日間に良く読まれた記事

miniPCのBMAXでWindows11のsecure boot設定漏れでトラブル発生

LinuxMint/ubuntuにWine 11導入を試しました ( LinuxMint 21.3 / 22.3 ubuntu 22.04 / 26.04 Wine 11.0 / 11.6 / 11.8 / 11.13 )

Windows95/98のPCゲームをUbuntu/LinuxMintの最新PCで楽しむ方法 ( KVM / Wine / dosbox-x / midi )