

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 連線至 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 伺服器**是適用於多個平台上 Web 開發人員的可擴展應用程式效能管理 (APM) 服務，可用於監控即時 Web 應用程式，它會自動偵測效能異常。如需詳細資訊，請參閱[查詢 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>

 資料來源可以從四個不同的服務存取指標。您可以設定對您所用服務的存取。如果這是您在 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 入口網站的四項資訊 （如需詳細說明，請參閱先前提供的連結）：
   +  **租用戶 ID **(Azure Entra ID、屬性、目錄 ID) 
   +  **用戶端 ID **(Azure Entra ID、應用程式註冊、選擇您的應用程式、應用程式 ID) 
   +  **用戶端秘密** (Azure Entra ID、應用程式註冊、選擇您的應用程式、金鑰） 
   +  **預設訂閱 ID **（訂閱、選擇訂閱、概觀、訂閱 ID) 

1.  將這四個項目貼到 Azure Monitor API 詳細資訊區段中的欄位。
   +  每個查詢都可以變更訂閱 ID。儲存資料來源並重新整理頁面，以查看指定用戶端 ID 可用的訂閱清單。

1.  如果您也使用 Azure Log Analytics 服務，則必須指定這兩個組態值，或重複使用上一個步驟的用戶端 ID 和秘密。
   +  用戶端 ID (Azure Entra ID、應用程式註冊、選擇您的應用程式、應用程式 ID) 
   +  用戶端秘密 (Azure Entra ID、應用程式註冊、選擇您的應用程式、金鑰、建立金鑰、使用用戶端秘密） 

1.  如果您使用的是 Application Insights，則需要來自 Azure 入口網站的兩項資訊 （如需詳細說明，請參閱先前提供的連結）：
   +  應用程式 ID 
   +  API 金鑰 

1.  將這兩個項目貼到 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 資料來源之後，第一個步驟是選取服務。有四個選項：
+  `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)，這些指標在指標的**維度**欄中列出一或多個值。

### 使用 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 }}` = 以指標名稱取代 （例如， 百分比 CPU) 
+  `{{ dimensionname }}` = *7.1\$1 的舊版 （用於回溯相容性）*，以第一個維度的索引鍵/標籤取代 （依索引鍵/標籤排序） （例如 blobtype) 
+  `{{ dimensionvalue }}` = *7.1\$1 的舊版 （用於回溯相容性）*，以第一個維度的值取代 （依索引鍵/標籤排序） （例如 BlockBlob) 
+  `{{ arbitraryDim }}` = *提供 7.1\$1 版本*，以對應維度的值取代。（例如， `{{ blobtype }}` 成為 BlockBlob) 

### 建立 Azure Monitor 的範本變數
<a name="create-template-variables-for-azure-monitor"></a>

 您可以在指標查詢中使用變數，而不是硬式編碼，例如伺服器、應用程式和感應器名稱。變數會顯示為儀表板頂端的下拉式清單選取方塊。您可以使用這些下拉式方塊來變更儀表板中顯示的資料。

 請注意，Azure Monitor 服務尚不支援多個值。若要視覺化多個時間序列 （例如，伺服器 1 和伺服器 2 的指標），請新增多個查詢，以便在相同的圖形或相同的資料表中檢視它們。

 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>

 Azure Monitor 服務支援 Grafana 提醒。這不是 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\$1 的舊版 （用於回溯相容性）*，以第一個維度的索引鍵/標籤取代 （依索引鍵/標籤排序） 
+  `{{ groupbyname }}` = *Grafana 7.1\$1 的舊版 （用於回溯相容性）*，以第一個維度的值取代 （依索引鍵/標籤排序） （例如 BlockBlob) 
+  `{{ metric }}` = 以指標名稱取代 （例如， 請求/計數） 
+  `{{ arbitraryDim }}` = *提供 7.1\$1 版本*，以對應維度的值取代。（例如， `{{ client/city }}` 變成芝加哥） 

### 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>

 Application Insights 支援 Grafana 提醒。這不是 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
```

 查詢也可以有一或多個非數值/非日期時間資料欄，這些資料欄會被視為維度，並在回應中成為標籤。例如，查詢會傳回依小時、電腦和 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"]=...`用於重新命名這些欄 — 允許空格的第二個語法。這會變更 Grafana 使用的指標名稱。因此，序列圖例和資料表資料欄等物件將符合您指定的內容。在此範例中，`Samples`會顯示 而非 `_count`。

### 資料表查詢
<a name="azure-table-queries"></a>

 資料表查詢主要用於資料表面板，並顯示資料欄和資料列的清單。此範例查詢會傳回具有六個指定資料欄的資料列。

```
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 提供數個巨集，您可以在查詢的 子句中使用：
+  `$__timeFilter()` – 展開至 `TimeGenerated ≥ datetime(2018-06-05T18:09:58.907Z) and` `TimeGenerated ≤ datetime(2018-06-05T20:09:58.907Z)` Grafana 時間挑選器的往返日期時間。
+  `$__timeFilter(datetimeColumn)` – 展開至 `datetimeColumn ≥ datetime(2018-06-05T18:09:58.907Z) and` `datetimeColumn ≤ datetime(2018-06-05T20:09:58.907Z)` Grafana 時間挑選器的往返日期時間。
+  `$__timeFrom()` – 從 Grafana 挑選器傳回起始日期時間。範例：`datetime(2018-06-05T18:09:58.907Z)`。
+  `$__timeTo()` – 從 Grafana 挑選器傳回起始日期時間。範例：`datetime(2018-06-05T20:09:58.907Z)`。
+  `$__escapeMulti($myVar)` – 用於包含非法字元的多值範本變數。如果 `$myVar`具有下列兩個值做為字串 `'\\grafana-vm\Network(eth0)\Total','\\hello!'`，則會展開為：`@'\\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 會計算可用於在查詢中依時間分組的最短時間粒度。它傳回`1h`可在 bin 函數中使用的時間粒度，例如 `5m`或 ；例如 `summarize count() by bin(TimeGenerated, $__interval)`。如需間隔變數的詳細資訊，請參閱 [新增間隔變數](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 函數可傳回工作區清單。

 如需範本和範本變數的相關資訊，請參閱 [範本和變數](templates-and-variables.md)。


|  名稱  |  描述  | 
| --- | --- | 
|  workspaces()  |  傳回預設訂閱的工作區清單。 | 
|  workspaces(12345678-aaaa-bbbb-cccc-123456789aaa)  |  傳回指定訂閱的工作區清單 （可以引用或取消引用 參數）。 | 

 下表顯示變數查詢範例。


|  Query  |  Description  | 
| --- | --- | 
|  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 資料表中的指標名稱清單。 | 

 下列程式碼 xample 顯示使用變數的時間序列查詢。

```
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 入口網站中的 Log Analytics 查詢編輯器
<a name="deep-linking-from-grafana-panels-to-the-log-analytics-query-editor-in-azure-portal"></a>

 在面板中選擇時間序列，以查看內容功能表，其中包含在 **Azure 入口網站中檢視**的連結。選擇該連結會在 Azure 入口網站中開啟 Azure Log Analytics 查詢編輯器，並從該處 Grafana 面板執行查詢。

 如果您目前尚未登入 Azure 入口網站，則連結會開啟登入頁面。提供的連結對任何帳戶都有效，但只有在您的帳戶可以存取查詢中指定的 Azure Log Analytics 工作區時，才會顯示查詢。

### Azure Log Analytics 提醒
<a name="azure-log-analytics-alerting"></a>

 Application Insights 支援 Grafana 提醒。這不是 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 資料。