

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Azure Monitor データソースへの接続
<a name="using-azure-monitor-in-AMG"></a>

 Azure Monitor データソースは Azure クラウド内の複数のサービスをサポートしています。
+  **Azure Monitor サービス**は、Azure リソースをモニタリングするための単一ソースを提供するプラットフォームサービスです。詳細については、「[Azure Monitor サービスのクエリ](#query-the-azure-monitor-service)」を参照してください。
+  **[Application Insights サーバー]**は、複数のプラットフォーム上のウェブデベロッパー向けの拡張可能なアプリケーションパフォーマンス管理 (APM) サービスで、ライブウェブアプリケーションのモニタリングに使用できます。これによりパフォーマンスの異常が自動的に検出されます。詳細については、「[Application Insights Analytics サービスのクエリ](#query-the-application-insights-analytics-service)」を参照してください。
+  **Azure Log Analytics** (または Azure Logs) では、Azure Monitor が収集したログデータにアクセスできます。詳細については、「[Azure Log Analytics サービスのクエリ](#querying-the-azure-log-analytics-service)」を参照してください。
+  **[Application Insights Analytics サービス]**を使用して、Azure Log Analytics で使用されているのと同じクエリ言語を使用し [[Application Insights データ]](https://docs.microsoft.com/en-us/azure/azure-monitor/app/analytics)をクエリします。詳細については、「[Application Insights Analytics サービスのクエリ](#query-the-application-insights-analytics-service)」を参照してください。

## データソースの追加
<a name="azure-add-the-data-source"></a>

 データソースは 4 つの異なるサービスのメトリクスにアクセスできます。使用するサービスへのアクセスを設定できます。また、Azure Entra ID で設定すれば、複数のサービスに同じ認証情報を使用することもできます。
+  [Microsoft Entra アプリケーションを登録し、サービスプリンシパルを作成する](https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal) 

1.  Grafana のメインメニューからアクセスすると、新しくインストールされたデータソースをデータソースセクション内にすぐに追加できます。次に、右上の **[データソースの追加]** ボタンを選択します。Azure Monitor のデータソースが、データソースリストの クラウドセクションで選択できるようになります。

1.  名前フィールドでは、Grafana により `Azure Monitor` または `Azure Monitor - 3` などのデータソースの名前が自動的に入力されます。複数のデータソースを設定する場合は、情報を含んだ名前に変更します。

1.  Azure Monitor を使用する場合は、Azure ポータルの 4 つの情報が必要です (詳細手順については、前述のリンクを参照してください)。
   +  **テナント ID** (Azure Entra ID、プロパティ、ディレクトリ ID) 
   +  **クライアント ID** (Azure Entra ID、アプリケーション登録、アプリケーションの選択、アプリケーション ID) 
   +  **クライアントシークレット** (Azure Entra ID、アプリケーション登録、アプリケーションの選択、キー) 
   +  **デフォルトのサブスクリプション ID** (サブスクリプション、サブスクリプションの選択、概要、サブスクリプション ID) 

1.  これらの 4 つの項目を Azure Monitor API 詳細 セクション内のフィールドに貼り付けます。
   +  サブスクリプション ID はクエリごとに変更できます。データソースを保存してページを更新し、指定のクライアント ID で使用できるサブスクリプションのリストを表示します。

1.  Azure Log Analytics サービスも使用する場合は、これら 2 つの設定値を指定、または前のステップのクライアント ID とシークレットを再利用する必要があります。
   +  クライアント ID (Azure Entra ID、アプリケーション登録、アプリケーションの選択、アプリケーション ID) 
   +  クライアントシークレット (Azure Entra ID、アプリケーション登録、アプリケーションの選択、キー、キーの作成、クライアントシークレットの使用) 

1.  Application Insights を使用する場合は、Azure Portal の 2 つの情報が必要です (詳細手順については、前述のリンクを参照してください)。
   +  アプリケーション ID 
   +  API キー 

1.  これら 2 つの項目を Application Insights API 詳細 セクション内の適切なフィールドに貼り付けます。

1.  **[保存してテスト]** ボタンを選択して、設定の詳細が正しいことをテストします。

 ステップ 4 で代わりに、新しい Azure Entra ID アプリケーションを作成する場合は、次のように [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/?view=azure-cli-latest) を使用します。

```
az ad sp create-for-rbac -n "http://localhost:3000"
```

## サービスの選択
<a name="azure-choose-a-service"></a>

 パネルのクエリエディタで、ご使用の Azure Monitor データソースを選択した後の最初のステップは、サービスを選択することです。次の 4 つのオプションがあります。
+  `Azure Monitor` 
+  `Application Insights` 
+  `Azure Log Analytics` 
+  `Insights Analytics` 

 選択したオプションに応じて、クエリエディタが異なります。Azure Monitor がデフォルトです。

## Azure Monitor サービスのクエリ
<a name="query-the-azure-monitor-service"></a>

 Azure Monitor サービスには、実行しているすべての Azure サービスのメトリクスが用意されています。これは Azure 上のアプリケーションのパフォーマンスを把握して、アプリケーションに影響する問題を事前に検出するのに役立ちます。

 Azure Monitor の認証情報を使用して複数のサブスクリプションにアクセスできる場合は、まず適切なサブスクリプションを選択します。

 サービスから取得できるメトリクス例は次のとおりです。
+  `Microsoft.Compute/virtualMachines - Percentage CPU` 
+  `Microsoft.Network/networkInterfaces - Bytes sent` 
+  `Microsoft.Storage/storageAccounts - Used Capacity` 

 クエリエディタを使用すると、複数のディメンションをサポートするメトリクスに対して、複数のディメンションをクエリできます。複数のディメンションをサポートするメトリクスは「[Azure Monitor がサポートするメトリクスリスト](https://docs.microsoft.com/en-us/azure/azure-monitor/platform/metrics-supported)」に記載されているものですが、メトリクスの **[ディメンション]** 列には 1 つ以上の値がリストされています。

### Azure Monitor のエイリアスを使用した凡例キーの書式設定
<a name="format-legend-keys-with-aliases-for-azure-monitor"></a>

 Azure Monitor API のデフォルト凡例形式は次のとおりです。

 `metricName{dimensionName=dimensionValue,dimensionTwoName=DimensionTwoValue}` 

 これらの書式は長い場合がありますが、この書式設定はエイリアスを使用して変更できます。**凡例形式** フィールドでは、次のエイリアスを任意の方法で組み合わせることができます。

 Azure Monitor の例: 
+  `Blob Type: {{ blobtype }}` 
+  `{{ resourcegroup }} - {{ resourcename }}` 

### Azure Monitor のエイリアスパターン
<a name="alias-patterns-for-azure-monitor"></a>
+  `{{ resourcegroup }}` = リソースグループの値に置き換え 
+  `{{ namespace }}` = 名前空間の値に置き換え (Microsoft.Compute/virtualMachines など) 
+  `{{ resourcename }}` = リソース名の値に置き換え 
+  `{{ metric }}` = メトリクス名に置き換え (Percentage CPU など) 
+  `{{ dimensionname }}` = *7.1 以降のレガシー (下位互換性用)* は、最初のディメンションのキー/ラベル (キー/ラベルでソート) に置き換え (blobtype など)。
+  `{{ dimensionvalue }}` = *7.1 以降のレガシー (下位互換性用)* は、最初のディメンションの値 (キー/ラベルでソート) に置き換え (BlockBlob など)。
+  `{{ arbitraryDim }}` = *7.1 以降で使用可能*は、対応するディメンションの値に置き換え (例えば、`{{ blobtype }}` は BlockBlob になります)。

### Azure Monitor のテンプレート変数の作成
<a name="create-template-variables-for-azure-monitor"></a>

 メトリクスクエリでサーバー、アプリケーション、センサー名などのものをハードコーディングする代わりに変数を使用できます。変数は、ダッシュボードの上部にドロップダウン選択ボックスとして表示されます。これらのドロップダウンボックスを使用して、ダッシュボードに表示されるデータを変更できます。

 Azure Monitor サービスは複数の値を未サポートであることに注意してください。複数の時系列 (server1 と server2 のメトリクスなど) を視覚化するには、複数のクエリを追加して同じグラフまたは同じテーブルで表示できるようにします。

 Azure Monitor データソースプラグインには、変数編集ビューの **[クエリ]** フィールドで指定できる、以下のクエリが用意されています。これらを使用して、変数のオプションリストを入力できます。


|  名前  |  説明  | 
| --- | --- | 
|  Subscriptions()  |  説明のリストを返します。 | 
|  ResourceGroups()  |  リソースグループのリストを返します。 | 
|  ResourceGroups(12345678-aaaa-bbbb-cccc-123456789aaa)  |  指定のサブスクリプションのリソースグループのリストを返します。 | 
|  Namespaces(aResourceGroup)  |  指定のリソースグループの名前空間のリストを返します。 | 
|  Namespaces(12345678-aaaa-bbbb-cccc-123456789aaa, aResourceGroup)  |  指定のリソースグループとサブスクリプションの名前空間のリストを返します。 | 
|  ResourceNames(aResourceGroup, aNamespace)  |  リソース名のリストを返します。 | 
|  ResourceNames(12345678-aaaa-bbbb-cccc-123456789aaa, aResourceGroup, aNamespace)  |  指定のサブスクリプションのリソース名のリストを返します。 | 
|  MetricNamespace(aResourceGroup, aNamespace, aResourceName)  |  メトリクス名前空間のリストを返します。 | 
|  MetricNamespace(12345678-aaaa-bbbb-cccc-123456789aaa, aResourceGroup, aNamespace, aResourceName)  |  指定のサブスクリプションのメトリクス名前空間のリストを返します。 | 
|  MetricNames(aResourceGroup, aNamespace, aResourceName)  |  メトリクス名のリストを返します。 | 
|  MetricNames(12345678-aaaa-bbbb-cccc-123456789aaa, aResourceGroup, aNamespace, aResourceName)  |  指定のサブスクリプションのメトリクス名のリストを返します。 | 

 例: 
+  リソースグループのクエリ: `ResourceGroups()` 
+  メトリクス名変数で渡される: `Namespaces(cosmo)` 
+  テンプレート変数のチェーン: `ResourceNames($rg, $ns)` 
+  パラメータの引用なし: `MetricNames(hg, Microsoft.Network/publicIPAddresses, grafanaIP)` 

 テンプレート作成とテンプレート変数の詳細については、「[テンプレート](templates-and-variables.md#templates)」を参照してください。

### サポートされる Azure Monitor メトリクスのリスト
<a name="list-of-supported-azure-monitor-metrics"></a>

 Azure Monitor API が返すすべてのメトリクスに値があるわけではありません。クエリ構築を容易にするため、Grafana データソースにはサポート対象の Azure Monitor メトリクスのリストがあり、値を持たないメトリクスは無視されます。新しいサービスとメトリクスが Azure クラウドに追加されると、このリストは定期的に更新されます。

### Azure Monitor アラート
<a name="azure-monitor-alerting"></a>

 Grafana アラートは Azure Monitor サービスでサポートされています。これは Azure Alerts のサポートではありません。Grafana アラートの詳細については、「[Grafana アラート](alerts-overview.md)」を参照してください。

## Application Insights サービスのクエリ
<a name="query-the-application-insights-service"></a>

### Application Insights のエイリアスを使用した凡例キーの形式設定
<a name="formatting-legend-keys-with-aliases-for-application-insights"></a>

 デフォルトの凡例の形式設定は次のとおりです。

 `metricName{dimensionName=dimensionValue,dimensionTwoName=DimensionTwoValue}` 

 凡例形式フィールドでは、任意の方法で次のエイリアスを組み合わせることができます。

 Application Insights の例：
+  `city: {{ client/city }}` 
+  `{{ metric }} [Location: {{ client/countryOrRegion }}, {{ client/city }}]` 

### Application Insights のエイリアスパターン
<a name="alias-patterns-for-application-insights"></a>
+  `{{ groupbyvalue }}` = *Grafana 7.1 以降のレガシー (下位互換性用)* は、最初のディメンションのキー/ラベル (キー/ラベルでソート) に置き換え。
+  `{{ groupbyname }}` = *Grafana 7.1 以降のレガシー (下位互換性用)* は、最初のディメンションの値 (キー/ラベルでソート) に置き換え (BlockBlob など)。
+  `{{ metric }}` = メトリクス名に置き換え (リクエスト/カウントなど) 
+  `{{ arbitraryDim }}` = *7.1 以降で使用可能*は、対応するディメンションの値に置き換え (例えば、`{{ client/city }}` は Chicago になります)。

### Application Insights のフィルター式
<a name="filter-expressions-for-application-insights"></a>

 フィルターフィールドでは OData フィルター式を使用できます。

 例: 
+  `client/city eq 'Boydton'` 
+  `client/city ne 'Boydton'` 
+  `client/city ne 'Boydton' and client/city ne 'Dublin'` 
+  `client/city eq 'Boydton' or client/city eq 'Dublin'` 

### Application Insights の 変数を使用したテンプレート作成
<a name="templating-with-variables-for-application-insights"></a>

 変数編集ビューの **[クエリ]** フィールドで、次のいずれかのクエリを使用します。

 テンプレート作成とテンプレート変数の詳細については、「[テンプレート](templates-and-variables.md#templates)」を参照してください。


|  名前  |  説明  | 
| --- | --- | 
|  AppInsightsMetricNames()  |  メトリクス名のリストを返します。 | 
|  AppInsightsGroupBys(aMetricName)  |  指定のメトリクス名の group by 句のリストを返します。 | 

 例: 
+  メトリクス名クエリ: `AppInsightsMetricNames()` 
+  メトリクス名変数で渡される: `AppInsightsGroupBys(requests/count)` 
+  テンプレート変数のチェーン: `AppInsightsGroupBys($metricnames)` 

### Application Insights アラート
<a name="application-insights-alerting"></a>

 Grafana アラートは Application Insights でサポートされます。これは Azure Alerts のサポートではありません。Grafana アラートの詳細については、「[Grafana アラート](alerts-overview.md)」を参照してください。

## Azure Log Analytics サービスのクエリ
<a name="querying-the-azure-log-analytics-service"></a>

 クエリは新しい [Azure Log Analytics (または KustoDB) クエリ言語](https://docs.microsoft.com/en-us/azure/azure-monitor/log-query/query-language)で記述されます。Log Analytics クエリは時系列データまたはテーブルデータとして書式設定できます。

 認証情報を使用して複数のサブスクリプションにアクセスできる場合は、クエリを入力する前に適切なサブスクリプションを選択します。

### 時系列クエリ
<a name="azure-time-series-queries"></a>

 時系列クエリはグラフパネルおよび SingleStat パネルなどの他のパネル用です。各クエリには少なくとも日時列と数値列が含まれている必要があります。結果は日時列で昇順にソートする必要があります。

 次のコード例は、時間別にグループ化された集計カウントを返すクエリを示しています。

```
Perf
| where $__timeFilter(TimeGenerated)
| summarize count() by bin(TimeGenerated, 1h)
| order by TimeGenerated asc
```

 クエリには 1 つ以上の非数値/非日時列を含めることができ、それらの列はディメンションと見なされてレスポンスのラベルになります。例えば、時間、Computer、CounterName でグループ化された集計カウントを返すクエリです。

```
Perf
| where $__timeFilter(TimeGenerated)
| summarize count() by bin(TimeGenerated, 1h), Computer, CounterName
| order by TimeGenerated asc
```

 追加の数値列も選択すできます (複数のディメンションの有無は問いません)。例えば、時間、Computer、CounterName 、InstanceName でカウントと平均値を取得する場合: 

```
Perf
| where $__timeFilter(TimeGenerated)
| summarize Samples=count(), ["Avg Value"]=avg(CounterValue)
    by bin(TimeGenerated, $__interval), Computer, CounterName, InstanceName
| order by TimeGenerated asc
```

**注記**  
 **ヒント**: 前のクエリでは、列の名前の変更に Kusto 構文と `Samples=count()``["Avg Value"]=...` が使用され、これはスペースに使用できる 2 番目の構文です。これにより Grafana が使用するメトリクス名が変更されます。その結果、シリーズの凡例やテーブル列などが指定内容と一致します。この例では、`_count` の代わりに `Samples` が表示されます。

### テーブルクエリ
<a name="azure-table-queries"></a>

 テーブルクエリは主にテーブルパネルで使用され、そこには列と行のリストが表示されます。この例では 6 つの指定列を含む行を返します。

```
AzureActivity
| where $__timeFilter()
| project TimeGenerated, ResourceGroup, Category, OperationName, ActivityStatus, Caller
| order by TimeGenerated desc
```

### Log Analytics の表示名の形式設定
<a name="format-the-display-name-for-log-analytics"></a>

 デフォルトの表示名の形式は以下のとおりです。

 `metricName{dimensionName=dimensionValue,dimensionTwoName=DimensionTwoValue}` 

 これは表示名フィールドのオプションを使用してカスタマイズできます。

### Azure Log Analytics マクロ
<a name="azure-log-analytics-macros"></a>

 クエリの書き込みを容易にするために、Grafana にはクエリの where 句で使用できるマクロがいくつか用意されています。
+  `$__timeFilter()` – `TimeGenerated ≥ datetime(2018-06-05T18:09:58.907Z) and` `TimeGenerated ≤ datetime(2018-06-05T20:09:58.907Z)` まで拡張されますが、from と to の日時は Grafana タイムピッカーの日時です。
+  `$__timeFilter(datetimeColumn)` – `datetimeColumn ≥ datetime(2018-06-05T18:09:58.907Z) and` `datetimeColumn ≤ datetime(2018-06-05T20:09:58.907Z)` まで拡張されますが、from と to の日時は Grafana タイムピッカーの日時です。
+  `$__timeFrom()` – Grafana ピッカーの From 日時を返します。例えば、`datetime(2018-06-05T18:09:58.907Z)` などです。
+  `$__timeTo()` – Grafana ピッカーの From 日時を返します。例えば、`datetime(2018-06-05T20:09:58.907Z)` などです。
+  `$__escapeMulti($myVar)` – 不正な文字を含む複数値のテンプレート変数で使用されます。`$myVar` が文字列 `'\\grafana-vm\Network(eth0)\Total','\\hello!'` として次の 2 つの値を持つ場合、`@'\\grafana-vm\Network(eth0)\Total', @'\\hello!'` に拡張されます。単一値変数を使用する場合はこのマクロは必要ありません。`@'\$myVar'` の代わりに変数インラインをエスケープします。
+  `$__contains(colName, $myVar)` – 複数値のテンプレート変数で使用されます。`$myVar` に値 `'value1','value2'` がある場合、`colName in ('value1','value2')` に拡張されます。

   **[すべて]** オプションを使用する場合は、**[すべてのオプションを含める]** チェックボックスをオンにし、**[すべての値のカスタム化]** フィールドに **all** の値を入力します。`$myVar` に `all` の値がある場合、マクロは代わりに `1 == 1` に拡張されます。テンプレート変数に多数のオプションがある場合、「where..in」句を大きくしないようにすると、クエリのパフォーマンスが向上します。

### Azure Log Analytics 組み込み変数
<a name="azure-log-analytics-builtin-variables"></a>

 一部の Grafana 変数では Azure Log Analytics クエリでも使用できます。
+  `$__interval` - Grafana はクエリで時間別にグループ化するために使用できる最小時間粒度を計算します。これは、`5m` や `1h` などの時間粒度を返し、これは `summarize count() by bin(TimeGenerated, $__interval)` などの bin 関数で使用できます。間隔変数の詳細については、「[間隔変数の追加](variables-types.md#add-an-interval-variable)」を参照してください。

### Azure Log Analytics の変数を使用したテンプレート作成
<a name="templating-with-variables-for-azure-log-analytics"></a>

 値のリストを返す Log Analytics クエリは、変数編集ビューの **[クエリ]** フィールドで使用できます。Log Analytics にはワークスペースのリストを返す Grafana 関数も 1 つあります。

 テンプレートとテンプレート変数の詳細については、「[テンプレートおよび変数](templates-and-variables.md)」を参照してください。


|  名前  |  説明  | 
| --- | --- | 
|  workspaces()  |  デフォルトサブスクリプションのワークスペースのリストを返します。 | 
|  workspaces(12345678-aaaa-bbbb-cccc-123456789aaa)  |  指定サブスクリプションのワークスペースのリストを返します (パラメータは引用符または引用符なしでもかまいません)。 | 

 次の表は変数クエリの例を示しています。


|  クエリ  |  説明  | 
| --- | --- | 
|  subscriptions()  |  Azure サブスクリプションのリストを返します。 | 
|  workspaces()  |  デフォルトサブスクリプションのワークスペースのリストを返します。 | 
|  workspaces("12345678-aaaa-bbbb-cccc-123456789aaa")  |  指定サブスクリプションのワークスペースのリストを返します。 | 
|  workspaces("\$1subscription")  |  サブスクリプションパラメータのテンプレート変数を使用。 | 
|  workspace("myWorkspace").Heartbeat \$1\$1 distinct Computer  |  仮想マシンのリストを返します。 | 
|  workspace("\$1workspace").Heartbeat \$1\$1 distinct Computer  |  テンプレート変数を持つ仮想マシンのリストを返します。 | 
|  workspace("\$1workspace").Perf \$1\$1 distinct ObjectName  |  Perf テーブルからオブジェクトのリストを返します。 | 
|  workspace("\$1workspace").Perf \$1\$1 where ObjectName == "\$1object" \$1\$1 distinct CounterName  |  Perf テーブルからメトリクス名のリストを返します。 | 

 次のコード例は変数を使用した時系列クエリを示しています。

```
Perf
| where ObjectName == "$object" and CounterName == "$metric"
| where TimeGenerated >= $__timeFrom() and TimeGenerated <= $__timeTo()
| where  $__contains(Computer, $computer)
| summarize avg(CounterValue) by bin(TimeGenerated, $__interval), Computer
| order by TimeGenerated asc
```

### Grafana パネルから Azure Portal の Log Analytics クエリエディタへのディープリンク
<a name="deep-linking-from-grafana-panels-to-the-log-analytics-query-editor-in-azure-portal"></a>

 パネルで時系列を選択すると、**[Azure Portal で表示]** へのリンクを含むコンテキストメニューが表示されます。そのリンクを選択すると Azure ポータルで Azure Log Analytics クエリエディタが開き、その Grafana パネルからクエリを実行します。

 現在 Azure Portal にログインしていない場合は、そのリンクによってログインページが開きます。指定リンクは任意のアカウントで有効ですが、クエリで指定された Azure Log Analytics ワークスペースにアクセスできるアカウントでのみクエリが表示されます。

### Azure Log Analytics アラート
<a name="azure-log-analytics-alerting"></a>

 Grafana アラートは Application Insights でサポートされます。これは Azure Alerts のサポートではありません。Grafana ワークスペースのアラートの詳細については、「[Grafana アラート](alerts-overview.md)」を参照してください。

## Application Insights Analytics サービスのクエリ
<a name="query-the-application-insights-analytics-service"></a>

 サービスタイプを **[Insights Analytics]** に変更すると、Log Analytics サービスと似たエディタを使用できます。このサービスでは Kusto 言語も使用しているため、データのクエリ手順は [Azure Log Analytics サービスのクエリ](#querying-the-azure-log-analytics-service) と同じです。ただし、代わりに Application Insights Analytics データをクエリする場合を除きます。