💨

Azure Managed Grafanaを試す

2024/07/26に公開

はじめに

最近、自宅の各部屋の温湿度計(SwitchBot)の情報を可視化するために、InfluxDBやGrafanaを使って遊んでいます。

副次的要素として少しGrafanaの事も判ってきたので、Azure上でマネージドサービスとして利用できる「Azure Managed Grafana」についても試してみました。

Azure Managed Grafana

試したAzure Managed GrafanaのSKUはStandardです。日本国内ではJapan Eastにデプロイ可能です(2024/7現在)

デプロイ

Azure Portalから「Azure Managed Grafana」を検索して、そこからデプロイするのが一番簡単です。

alt text

ただし、私はあまのじゃくなのでBicepでデプロイします。

他の理由としては、Azure Portalからデプロイする場合「監視閲覧者」ロール(IAM)を同じサブスクリプション対して付与する設定がデフォルトで有効となります。

ただし、自分は管理グループにIAMを付与したかったり、何度も再作成することがあると考えて先にテンプレートファイルを準備しました。

Azure Portalからのデプロイ直前にARMテンプレートの確認が行えますけど、このテンプレートはかなりの力作でARMやBicepでIaCをばりばり行う方には参考になると考えます。

さて、bicepコードは以下の感じです。

main.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

できました。

img

必要なIAM付与

Azure Portalからデプロイする際に「ターゲットサブスクリプションの"監視閲覧権限"ロールを使用して、このIDにロールの割り当てを追加します」にチェックを入れている場合と、Grafana管理者ロールに「自分を含める」にチェックをいれた場合には本操作は不要です。

img

私はBicepからGrafanaワークスペースを単独でデプロイしたので必要なIAMを手動で追加します。

Grafanaへ管理者ロールの追加

作成したManaged GrafanaのリソースのIAMで「Grafana管理者」を自分に対して割り当てます。

img

これで、Grafanaポータルへサインインできるようになります。

監視対象リソースへ監視閲覧者ロールの追加

今回は複数のサブスクリプションに対して一括でロールの付与をしたいので、管理グループに対して「監視閲覧者」ロールを付与します。

メンバーとしては、先に作成したManaged Grafanaのシステム割当マネージドIDを指定します。

img

Grafanaポータルへ接続

Managed Grafanaの「エンドポイント」が専用のURLです。こちらをクリックしてGrafanaポータル画面を開きます。

img

サインインするユーザは先に管理者ロールを付与したユーザになります。

無事開きましたね。

img

Data sourcesを見ると、事前にAzure Monitorが追加済でデフォルトに設定されています。

img

「Home > Dashboards > Azure Monitor」配下を見ると、事前に色々とサンプル的なダッシュボードが登録済でした。

img

試しにStorage Accountsの情報を表示してみます。かっこいい。

img

何かメトリックを追加する

Grafanaの操作はあまり深く知っていないのですが、VMのメトリック情報とLog Analyticsに保存しているContainerログを表示するダッシュボードを作ってみました。

img

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を立ち上げて自宅の温湿度計を可視化して遊んでいる

img

おわりに

多少駆け足で試用レポを書きましたが、Azure Managed Grafanaをざっくり使った記事でした。

何かの参考になれば幸いです。

Discussion