Azure Managed Grafanaを試す
はじめに
最近、自宅の各部屋の温湿度計(SwitchBot)の情報を可視化するために、InfluxDBやGrafanaを使って遊んでいます。
副次的要素として少しGrafanaの事も判ってきたので、Azure上でマネージドサービスとして利用できる「Azure Managed Grafana」についても試してみました。
試したAzure Managed GrafanaのSKUはStandardです。日本国内ではJapan Eastにデプロイ可能です(2024/7現在)
デプロイ
Azure Portalから「Azure Managed Grafana」を検索して、そこからデプロイするのが一番簡単です。
ただし、私はあまのじゃくなのでBicepでデプロイします。
他の理由としては、Azure Portalからデプロイする場合「監視閲覧者」ロール(IAM)を同じサブスクリプション対して付与する設定がデフォルトで有効となります。
ただし、自分は管理グループにIAMを付与したかったり、何度も再作成することがあると考えて先にテンプレートファイルを準備しました。
Azure Portalからのデプロイ直前にARMテンプレートの確認が行えますけど、このテンプレートはかなりの力作でARMやBicepでIaCをばりばり行う方には参考になると考えます。
さて、bicepコードは以下の感じです。
param grafanaName string = 'grafana01'
param skuName string = 'Standard'
param grafanaMajorVersion string = '10'
param zoneRedundancy string = 'Disabled'
param apiKey string = 'Disabled'
param deterministicOutboundIP string = 'Disabled'
param publicNetworkAccess string = 'Enabled'
// Create a new managed Grafana resource
resource grafana 'Microsoft.Dashboard/grafana@2023-09-01' = {
name: grafanaName
location: resourceGroup().location
sku: {
name: skuName
}
properties: {
grafanaMajorVersion: grafanaMajorVersion
zoneRedundancy: zoneRedundancy
apiKey: apiKey
deterministicOutboundIP: deterministicOutboundIP
publicNetworkAccess: publicNetworkAccess
}
identity: {
type: 'SystemAssigned'
}
}
デプロイはaz login, az account set済みの状態で以下例のように実行すれば良いかと。
az group create -n rg-grafana -l japaneast
az group deployment create -g rg-grafana --template-file main.bicep
できました。
必要なIAM付与
Azure Portalからデプロイする際に「ターゲットサブスクリプションの"監視閲覧権限"ロールを使用して、このIDにロールの割り当てを追加します」にチェックを入れている場合と、Grafana管理者ロールに「自分を含める」にチェックをいれた場合には本操作は不要です。
私はBicepからGrafanaワークスペースを単独でデプロイしたので必要なIAMを手動で追加します。
Grafanaへ管理者ロールの追加
作成したManaged GrafanaのリソースのIAMで「Grafana管理者」を自分に対して割り当てます。
これで、Grafanaポータルへサインインできるようになります。
監視対象リソースへ監視閲覧者ロールの追加
今回は複数のサブスクリプションに対して一括でロールの付与をしたいので、管理グループに対して「監視閲覧者」ロールを付与します。
メンバーとしては、先に作成したManaged Grafanaのシステム割当マネージドIDを指定します。
Grafanaポータルへ接続
Managed Grafanaの「エンドポイント」が専用のURLです。こちらをクリックしてGrafanaポータル画面を開きます。
サインインするユーザは先に管理者ロールを付与したユーザになります。
無事開きましたね。
Data sourcesを見ると、事前にAzure Monitorが追加済でデフォルトに設定されています。
「Home > Dashboards > Azure Monitor」配下を見ると、事前に色々とサンプル的なダッシュボードが登録済でした。
試しにStorage Accountsの情報を表示してみます。かっこいい。
何かメトリックを追加する
Grafanaの操作はあまり深く知っていないのですが、VMのメトリック情報とLog Analyticsに保存しているContainerログを表示するダッシュボードを作ってみました。
Log Analyticsの情報出力には普段みなさんが使っているKQLがそのまま記述できます。
fluentbit_CL
| where log_s contains "Player"
| project-rename DateTime=TimeGenerated, ContainerName=container_name_s, Log=log_s
| project DateTime, ContainerName, Log
| order by DateTime desc
まとめ
あくまでも所感ですが以下を感じました。
- Azure Monitorの情報だけであればAzure Portalのダッシュボードやブックで近いことは実現できそう
- Managed Grafana Essentialはお安いけど制限も多くソースとしてAzure Monitorしか選べない
- Managed Grafana Standardであれば色々と本家の多種多様なソースが選択可能なので、Azure Monitorに限らず色々と可視化して監視する場合には有用
- 本来エンプラ向けには監視基盤の可用性やセキュリティ(アカウント、ネットワークなど)も重要であるため、そういった用途には有用
- プライベート用途、開発用途であればDockerhub上のオフィシャルイメージで十分かも
https://hub.docker.com/r/grafana/grafana/ - 実際自分も自宅のDocker環境にInfluxDB, Grafanaを立ち上げて自宅の温湿度計を可視化して遊んでいる
おわりに
多少駆け足で試用レポを書きましたが、Azure Managed Grafanaをざっくり使った記事でした。
何かの参考になれば幸いです。
Discussion