Grafana CloudのCanvasでカスタムアイコンを使ってAWSの構成図を書いてみた

Grafana CloudのCanvasでカスタムアイコンを使ってAWSの構成図を書いてみた

2025.07.31

はじめに

今回はGrafana CloudのCanvasパネルを使ってAWSの構成図を書いてみたいと思います。
ただし、AWS構成図に必要なSVGファイルは全て私の手元にあります。これを如何にしてGrafana Cloud側で使用するかが今回の記事のキーポイントです。

CanvasはGrafanaのパネルの一種ですが少し特殊なパネルです。
テキスト、図形、画像、アイコンなど様々な要素を自由に配置できるパネルとなっています。
https://grafana.com/docs/grafana/latest/panels-visualizations/visualizations/canvas/
イメージとしてはGrafanaのパネルの部分がFigmaやCacoo, draw.ioとまではいきませんが..それぐらい自由なキャンバスになるイメージです。

ということは、普段描いているAWSの構成図なんかも書けそうですね!
ということでやってみました。

環境

Grafana Cloud

今回検証に使用した環境はGrafana Cloudのversion 12.1.0-91295です。

#バージョン確認
$ curl -s -H "Authorization: Bearer <API_KEY>" https://<DashboardURL>/api/health | jq -r '.version'

12.1.0-91295

SVGファイル

AWSアイコンのSVGファイルはAWS公式のアイコンパッケージを私のローカル環境にダウンロードしています。

Grafana CloudのCanvasにSVGファイルを使用するには

ローカルに保管しているSVGファイルをCanvasで利用したい場合、ホスト型のGrafanaではローカル環境の特定ディレクトリに配置すればGrafanaから利用できます。
しかし、Grafana Cloudの場合そんな特定のディレクトリなどはありません。

そこで解決方法としてWeb上のSVGファイルが配置されているURLを指定することができます。
つまりSVGファイルを配置する場所には以下の要素が必要になります。

  • SVGファイルを配置できる
  • インターネット経由でアクセスできる

今回はCloudFront+S3で上記を実現したいと思います。
CloudFrontを利用しているのはS3を直接外部に公開しないためです。
CloudFront+S3部分の構築が知りたい方は以下のブログを参考にしてください。
https://dev.classmethod.jp/articles/cloudfront-s3web/

構成図

Pasted image 20250724225031
今回はS3にAWSアイコンをSVG形式で保管しています。
検証用のため、特に細かい設定はしていませんがS3へのアクセスはCloudFrontを経由する場合のみに制限したいため、オリジンアクセスコントロール (OAC)を利用しています。

Canvasを使ってみる

それではダッシュボードを作成します。
まずはパネルを作成して 可視化(visualization) > Canvasを選択します。
CleanShot 2025-07-26 at 08.29.24@2x
画面左側の赤枠部分に構成図を書いていきます。
CleanShot 2025-07-26 at 08.32.14@2x

AWSアイコン作成

まずはアイコンを作成します。
パネルオプションの レイヤ > 要素 > アイコン追加 > Icon
の順に選択します。
CleanShot 2025-07-26 at 08.36.38@2x
はてなアイコンのアイコンが追加されるので、これを準備しておいたSVGファイルに置き換えます。
CleanShot 2025-07-26 at 21.51.09@2x
それではS3バケットに保存しているSVGファイルのURLを指定します。
はてなアイコンのアイコンをクリックした状態で
パネルオプション > 背景(icon) > 画像 > Select a value
の順にクリックします。

画像にも書いてますが、アイコン > SVGパス ではないので注意が必要です。
CleanShot 2025-07-26 at 08.42.52@2x
表示された小さいウィンドウのURLタブをクリックして、
真下の空欄にSVGファイルを配置したURLを入力します。

今回の場合はCloudFront経由でアクセスするので以下のようなURLになります。
https://<CloudFrontのディストリビューションドメイン名>/<S3のファイルパス>
実際のURLはこんな感じです。
https://d1u1zys7adgahn.cloudfront.net/EC2.svg
CleanShot 2025-07-26 at 08.53.00@2x 1
URLを入力するとSVGファイルのプレビューが表示されるので、選択をクリックします。
すると背景として選択した画像が入ります。
CleanShot 2025-07-26 at 17.33.59@2x
次に手前のはてなアイコンを消したいと思います。

画像にも書いてますが、ファイル名の右の×ボタンを押したら消えそうですが、押しても何も起こりません。
代わりにはてなアイコンを見えなくするために
パネルオプション > アイコン > 塗りつぶした色
で透明を選択します。
CleanShot 2025-07-26 at 17.53.58@2x

これでAWSのアイコンをパネル上に置くことができました。
一苦労ですね。
CleanShot 2025-07-26 at 17.57.33@2x
そもそも、はてなアイコンをAWSアイコンに変えればいいんじゃないの?って思われるかもしれませんが、私が試した限りでは、パネルオプション > アイコン のURLにSVGファイルのURLを入力してもプレビュー画面に何も表示されず、適用してもはてなアイコンがAWSアイコンに変わることはありませんでした。

背景の変更

AWSの構成図がみやすいように背景を白塗りにしたいと思います。
パネルオプション > レイヤー > 背景 > 色
の右側の丸いアイコンをクリックして、カスタムタブから白色を選択します。
CleanShot 2025-07-26 at 19.21.28@2x
これで背景が白色になって少しみやすくなりました。

アイコンサイズの調整

ちょっとアイコンサイズが大きいので、調整します。
UIベースで動的にアイコンを動かすこともできますが、今回は綺麗に並べるためにレイアウトから位置を調整しています。
CleanShot 2025-07-26 at 22.06.39@2x

二つ目以降のAWSアイコン

2つ目以降は既存のアイコンを複製すると楽です。
アイコンを左クリックすると複製ボタンが出てくるので複製をクリックします。
CleanShot 2025-07-26 at 22.16.28@2x
そのほか、同じようにアイコンを並べていきます。
CleanShot 2025-07-26 at 22.40.35@2x
よくあるWebの三層構造をAWSアイコンで作成しました。
次はこのシステムがVPC内に存在することを表現したいです。

VPC内であることを枠で表現したかったのですが、デザインツールのような枠線と内側の塗りという概念は存在しないようなので、四角の図を使います。
アイテムを追加 > Rectangle要素を選択 > 作成された四角を選択して最背面に移動
Pasted image 20250726224544
VPCの枠はできたので色だけ調整しておきます。
VPCの背景を選択 > 背景(rectangle) > 色
の順に進み、色はVPCのアイコンと同じrgb(140, 79, 255)を選択した状態で透明度を小さめに設定しています。
CleanShot 2025-07-26 at 22.51.43@2x
それっぽくなってきましたね。
最後にネットワークの経路も書いておきます。
1から2の部分にドラッグ&ドロップすると矢印が作成されます。
CleanShot 2025-07-26 at 22.58.08@2x
あとはそれっぽい感じに色、矢印の向き、線のスタイルを変更します。
CleanShot 2025-07-26 at 23.01.50@2x
さらに線にはアニメーションという機能があります。
ONにすると線にアニメーションを加えることができます。
CleanShot 2025-07-26 at 23.05.44
他のアイコンも同じように設定します。
CleanShot 2025-07-26 at 23.13.46
いい感じにAWSの構成図ができました。
一般的なデザインツールと比べるできることは少ないですが、パネルに配置する簡単なSVGファイル程度ならCanvasでも十分表現できることが分かりました。

まとめ

今回はGrafanaのCanvasパネルを使ってAWSの構成図を書いてみました。
Grafana CloudでカスタムSVGファイルを利用する場合は何かしらSVGファイルを配信する仕組みが必要にはなります。
AWSであればS3を使えば簡単に実現できるので、興味のある方はぜひやってみて下さい。

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.