EC2でGrafana OSSを動かして時系列データの可視化を体感してみよう

記事タイトルとURLをコピーする

こんにちは。
アプリケーションサービス部の兼安です。
今回は、EC2上にGrafana OSSを起動して、時系列データの可視化を体感してみようという記事です。
目的は、時系列のデータの可視化とは?ダッシュボードを作成するとはどういうことか?を体験していただくことです。

本記事の対象者

  • データの可視化に興味がある方
  • ダッシュボードを作成してみたいが、まずはどういうものか体験してみたい方
  • EC2、VPC、RDSの操作を把握されている方

本記事はGrafanaのインストールから操作までに焦点を当てているため、EC2などの基本操作は把握されていることを前提としています。
また、本記事はGrafanaの体験に焦点をあてているので、本格的な利用を視野に入れた構成を扱っていません。
ご了承ください。

時系列データとは

時系列データとは、時間の経過に伴って定期的に記録されたデータのことを指します。
例えば、IoTデバイスやセンサーが送る、環境の温度、湿度、光のレベル、動きなどの物理的な状態が時系列データになります。

ちなみに、AWSには時系列データを扱うのに特化したサービスが存在します。
本記事では一般的なRDBを使用しているため触れていませんが、別の記事で扱っていますのでよろしければご覧ください。
Amazon Timestream カテゴリーの記事一覧 - サーバーワークスエンジニアブログ

Grafanaとは

様々なデータベースから取得した情報を可視化するWebアプリケーションです。
時系列データベースの可視化において、よく挙げられるツールです。

grafana.com

Grafanaは、EC2などにインストールすることで使用することができます。
また、AWSにはAmazon Managed Grafanaというマネージドサービス(全て準備されたアプリケーション)もあります。

aws.amazon.com

Amazon Managed Grafanaは、利用するのにOrganizationsまたは外部IDプロバイダーが必要になります。
今回は体験することを目的としているので、EC2にGrafana OSSをインストールして使用することにします。
体感した上で本格的な利用を視野に入れた場合に、改めてAmazon Managed Grafanaを検討するとよいと思います。

本記事の使用ツール

  • Amazon EC2
    • OSはUbuntu
  • Grafana OSS
    • バージョン9.4
  • Amazon RDS for MySQL

Grafana OSSのバージョンに9.4を指定しているのは、本記事執筆時点のAmazon Managed Grafanaのバージョンが9.4であるためです。
本格的な利用を視野に入れた場合に、Amazon Managed Grafanaに移行する際に、バージョンの差異による違和感を最小限にするためです。

EC2の起動と、Grafana OSSのインストール

EC2の起動

OSイメージにUbuntuを選択して、EC2を起動

OSイメージにUbuntuを選択して、EC2を起動します。
VPCはRDSと同じVPCを選択してください。

この時、高度な詳細設定で、IAMインスタンスプロフィールで、AmazonSSMManagedInstanceCoreを持つロールを指定すると、セッションマネージャーでのコマンド操作が可能になり、作業が楽になりお勧めです。

高度な詳細設定で、IAMインスタンスプロフィールを指定

docs.aws.amazon.com

docs.aws.amazon.com

Grafana OSSのインストール

EC2にSSHでログインしてインストールコマンドを実行します。
コマンドは公式サイトを参考にしています。

grafana.com

grafana.com

sudo apt-get install -y apt-transport-https software-properties-common wget
sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com beta main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
# Updates the list of available packages
sudo apt-get update
# Installs the latest OSS release:
sudo apt-get install grafana=9.4.17

# Start the Grafana server with systemd
sudo systemctl daemon-reload
sudo systemctl start grafana-server

# Configure the Grafana server to start at boot using systemd
sudo systemctl enable grafana-server.service

セキュリティグループの設定

Grafana OSSは、デフォルトでは3000番ポートで起動します。
セキュリティグループでTCPの3000番ポートを開けておきます。

Grafana OSSへのアクセス

http://<EC2のパブリックIP>:3000にアクセスするGrafanaのログイン画面が表示されます。

Grafanaのログイン画面.png

初期はadmin/adminでログインができます。

grafana.com

adminの新しいパスワード入力を求められるので入力してください。

adminの新しいパスワード入力

Grafanaのトップ画面が表示されます。

Grafanaのトップ画面

データソースの設定

画面左下の歯車アイコンをクリック、Data sourcesでデータソースの設定画面を表示します。

歯車アイコンをクリック後にData sourcesをクリック

Add data sourceをクリックします。

Add data source`をクリック

検索窓でMySQLを入力し、MySQLをクリックします。

検索窓でMySQLを入力し、MySQLをクリック

Amazon RDS for MySQLの接続情報を入力します。
Amazon RDS for MySQL側は、Grafana OSSからの接続を許可するために、VPCは同じにして、セキュリティグループで3306番ポートを開けておきます。

項目名 入力値
Host Amazon RDS for MySQLのエンドポイント:3306
Database RDSのデータベース名
User RDSのユーザー名
Password RDSのパスワード

MySQLの接続情報を入力

MySQLの接続情報を入力したら、画面下のSave & Testをクリックします。
MySQLの接続情報とセキュリティグループの設定などに問題がなければ、Database Connection OKと表示されます。

ダッシュボードの作成

画面左の正方形のアイコンをクリック、Dashboardsでダッシュボード一覧表示します。

Dashboardsでダッシュボード一覧表示

New dashboardをクリックします。

New Dashboardをクリック

新規作成されたダッシュボードが表示されます。
ダッシュボードの名称などは、画面右上の歯車アイコンから変更できます。

新規作成されたダッシュボード

Dashboard settings

そのまま閉じると入力内容が消えるので、右上のフロッピーディスクアイコンをクリックして保存します。
(最近はフロッピーディスクと言われてもわかりませんよね・・・歯車アイコンの左隣です。 )

Save dashboard

ダッシュボードに折れ線グラフのパネルを追加

パネルの追加

画面右上のAdd panelをクリックします。

Add pane

Add new panelをクリックします。

Add new panel

パネルの新規作成画面が表示されます。
パネル名は右側で入力します。

パネルの新規作成画面

データの抽出条件を入力

画面下部でデータの抽出条件を入力します。

データの抽出条件を入力

データソースはこの時点では一つしかないので、おそらくMySQL(default)が選択されていると思いますのでそのままで大丈夫です。
複数データソースがある場合は、適切なデータソースを選択してください。
DatasetでMySQLのデータベース名を、Tableでテーブル名を選択します。
テーブルまで選択したら、カラムを選択していきます。

今回は、このようなテーブルを用意しておきましたのでこれに沿った設定をしています。

CREATE TABLE iot_data (
    id INT AUTO_INCREMENT PRIMARY KEY,
    time DATETIME,
    device_id VARCHAR(255),
    fuel_reading FLOAT,
    location VARCHAR(255),
    speed FLOAT,
    INDEX iot_data_idx (time)
);

データの抽出条件をSQLで入力

データの抽出条件はSQLで入力することもできます。
BuilderCodeと並んでいる箇所でCodeをクリックすると、SQLを入力できる画面に切り替わります。

SQL入力モード

データの抽出条件に基づいて可視化

データの抽出条件を入力したら、Run queryをクリックしてください。
画面上部に可視化されたデータが表示されます。

可視化されたデータ

確認ができたら右上でのSaveのあと、Applyをクリックしてください。
これでダッシュボードに設定内容が反映されます。

ダッシュボードで確認

グラフが追加されたダッシュボード

日時の範囲を変える場合は、ダッシュボードやパネルの右上にある時計アイコンの欄で範囲を変えます。
もしくは、グラフを範囲選択することでも日時の範囲が変えることができます。

Last xxxのような選択肢を選んでおけば、ダッシュボードを開き直した時に自動的に最新データが反映されます。

あとは、グラフの種類を変えたり色々な機能触って、Grafanaの機能を体感して行ってください。

grafana.com

補足

実は、Grafana OSSとAmazon Managed Grafanaでは、メニューの表示形式が異なります。
ですが、やることは概ね同じなので、Amazon Managed GrafanaでもGrafana OSSでの体験は充分に活きると思います。

Amazon Managed Grafanaで、TOPページをダッシュボードにしたり、CSV出力したりする方法を紹介している記事がありますので、参考にしてください。
Grafana OSSとは若干UIが異なりますが、参考になると思います。

blog.serverworks.co.jp

兼安 聡(執筆記事の一覧)

アプリケーションサービス部 DS1課所属
AWS12冠。
広島在住です。
最近認定スクラムマスターになりました。今日も明日も修行中です。