HTTP Data Collector API & カスタム フィールドが有効なカスタム テーブルからデータ収集ルールベースのカスタム テーブルに移行する

# はじめに

[先日の投稿](https://qiita.com/tetsuya-ooooo/items/356b11cd30abc856fb12)で、Azure Log Analytics ワークフローにログ (Power Automate クラウド フローの実行履歴) をインポートする際、「Azure Log Analytics Data Collector」コネクタの「Send Data (送信データ)」アクションを使いました。

https://docs.microsoft.com/ja-jp/connectors/azureloganalyticsdatacollector/?WT.mc_id=AZ-MVP-5003113

しかし、[Azure Monitor HTTP Data Collector API](https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/data-collector-api?WT.mc_id=AZ-MVP-5003113) で作成されたテーブルは、「データ エクスポート」や「基本ログ」などが利用できません。

https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/logs-data-export?WT.mc_id=AZ-MVP-5003113&tabs=portal

https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/basic-logs-configure?WT.mc_id=AZ-MVP-5003113&tabs=portal-1%2Cportal-2

これらの機能を利用するためには、データ収集ルールベースのカスタム テーブルに移行する必要があります。

https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/logs-ingestion-api-overview?WT.mc_id=AZ-MVP-5003113

よって、今回は[先日の投稿](https://qiita.com/tetsuya-ooooo/items/356b11cd30abc856fb12)で構築した環境でこれらの機能を利用するために、以下の 3 点 (下図の緑色の部分) を行います。

- Azure Monitor HTTP Data Collector API で作成されたテーブルをデータ収集ルール (DCR:Data Collection Rule) ベースのものに移行する
- データ収集エンドポイント (DCE:Data Collection Endpoint) と データ収集ルールを作成する
- ロジックアプリで収集した Power Automate クラウド フローの実行履歴を Logs ingestion API を使って Azure Log Analytics ワークスペースにインポートする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/8fbae5e5-d1f1-b198-413f-4ce0c4267af8.png)


# データ収集ルールベースのテーブルに移行

以下のドキュメントを参考に、Azure Monitor HTTP Data Collector API で作成されたテーブルをデータ収集ルールベースのものに移行します。

https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/custom-logs-migrate?WT.mc_id=AZ-MVP-5003113


## 「Log Analytics 共同作成者」ロールを割り当てる

Azure Log Analytics ワークスペースで[「Log Analytics 共同作成者」](https://docs.microsoft.com/ja-jp/azure/role-based-access-control/built-in-roles?WT.mc_id=AZ-MVP-5003113#log-analytics-contributor)ロールを割り当てます。
今回は、Postman を使って操作するので、[先日の投稿](https://qiita.com/tetsuya-ooooo/items/b29ae8beb93cdea39dc8)で Azure AD に登録したアプリケーションのサービス プリンシパルにこのロールを割り当てます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/f8c255ff-35e7-3fd1-767f-87044249ae74.png)


## 移行対象のテーブルを移行

以下の API に対してリクエストします。

```http
POST /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.operationalinsights/workspaces/{workspaceName}/tables/{tableName}/migrate?api-version=2021-12-01-preview
```

| パス | 設定値 |
|:-|:-|
| ```{subscriptionId}```  | Log Analytics ワークスペースが属する サブスクリプション ID |
| ```{resourceGroupName}``` | Log Analytics ワークスペースが属する リソース グループ名 |
| ```{workspaceName}``` | Log Analytics ワークスペース名 |
| ```{tableName}``` | 移行対象のテーブル名 |

なお、```api-version``` は、執筆時では ```2021-12-01-preview``` を指定しました。
※すでに「プライベート プレビュー」でないため

Postman でリクエストする場合は、Azure AD から取得したアクセストークンとともに、以下の URL にリクエストを送信します。

```http:(例)
POST https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/ppt-dev-sys-d-rg-3/providers/microsoft.operationalinsights/workspaces/ppt-dev-sys-d-ws-1/tables/FlowRunHistory_CL/migrate?api-version=2021-12-01-preview
```

※Azure CLI [「az rest」](https://docs.microsoft.com/ja-jp/cli/azure/reference-index?view=azure-cli-latest?WT.mc_id=AZ-MVP-5003113#az-rest) を使ってもできます。

その後、Log Analytics ワークスペースの [設定] カテゴリ配下の [テーブル (プレビュー)] を開くと、移行したテーブルを見つけることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/810a25aa-2a3c-85f7-1273-97332cf6cdd6.png)

これで、Azure Monitor でデータ収集エンドポイント (DCE) とデータ収集ルール (DCR) を構成できるようになります。


# データ収集エンドポイントとデータ収集ルールを作成

ここでは、以下のことを行います。

- データ収集エンドポイント (DCE) を作成する
- データ収集ルール (DCR) を作成する
- DCR リソースで「監視メトリック発行者」ロールを割り当てる


## データ収集エンドポイントを作成

データ収集エンドポイントは、Azure Monitor に追加できるデータ取り込みのインターフェースです。
概要については、以下のドキュメントをご参照ください。

https://docs.microsoft.com/ja-jp/azure/azure-monitor/essentials/data-collection-endpoint-overview?WT.mc_id=AZ-MVP-5003113

それでは、以下のチュートリアル (Create data collection endpoint) を参考に、Azure ポータルでリソースを作成します。

https://docs.microsoft.com/en-us/azure/azure-monitor/logs/tutorial-logs-ingestion-portal?WT.mc_id=AZ-MVP-5003113#create-data-collection-endpoint

注意点として、データ収集エンドポイントは、データが送信される Azure Log Analytics ワークスペースと同じリージョンにデプロイする必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/7324db7b-e4da-e6d5-36f9-0540cfbd68dd.png)


## データ収集ルールを作成

データ収集ルールは、Azure Log Analytics ワークスペースへのデータ取り込みパイプライン (ETL:Extract Transform Load みたいな) です。
概要については、以下のドキュメントをご参照ください。

https://docs.microsoft.com/ja-jp/azure/azure-monitor/essentials/data-collection-rule-overview?WT.mc_id=AZ-MVP-5003113


### ARM テンプレートを作成

それでは、以下のチュートリアル (Create data collection rule) を参考に、このチュートリアルに掲載されている ARM (Azure Resource Manager) テンプレートを加工してデプロイに用います。
※今回のケース (移行) では、Azure ポータルでは作れなかったため。

https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/tutorial-logs-ingestion-api?WT.mc_id=AZ-MVP-5003113?WT.mc_id=AZ-MVP-5003113#create-data-collection-rule

まず、以下のように ARM テンプレートを作ってみました。

```json:DCR&#x20;の&#x20;ARM&#x20;テンプレート
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "dataCollectionRuleName": {
      "type": "String",
      "metadata": {
        "description": "Specifies the name of the Data Collection Rule to create."
      }
    },
    "location": {
      "defaultValue": "japaneast",
      "allowedValues": [
        "japaneast",
        "japanwest"
      ],
      "type": "String",
      "metadata": {
        "description": "Specifies the location in which to create the Data Collection Rule."
      }
    },
    "workspaceResourceId": {
      "type": "String",
      "metadata": {
        "description": "Specifies the Azure resource ID of the Log Analytics workspace to use."
      }
    },
    "workspaceName": {
      "type": "String",
      "metadata": {
        "description": "Specifies the name of the Log Analytics workspace to use."
      }
    },
    "endpointResourceId": {
      "type": "String",
      "metadata": {
        "description": "Specifies the Azure resource ID of the Data Collection Endpoint to use."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Insights/dataCollectionRules",
      "apiVersion": "2021-09-01-preview",
      "name": "[parameters('dataCollectionRuleName')]",
      "location": "[parameters('location')]",
      "properties": {
        "dataCollectionEndpointId": "[parameters('endpointResourceId')]",
        "streamDeclarations": {
          "Custom-FlowRunRawData": {
            "columns": [
              {
                "name": "Time",
                "type": "datetime"
              },
              {
                "name": "EnvironmentName",
                "type": "string"
              },
              {
                "name": "FlowName",
                "type": "string"
              },
              {
                "name": "DisplayName",
                "type": "string"
              },
              {
                "name": "RunName",
                "type": "string"
              },
              {
                "name": "StartTime",
                "type": "datetime"
              },
              {
                "name": "EndTime",
                "type": "datetime"
              },
              {
                "name": "Status",
                "type": "string"
              }
            ]
          }
        },
        "destinations": {
          "logAnalytics": [
            {
              "workspaceResourceId": "[parameters('workspaceResourceId')]",
              "name": "[parameters('workspaceName')]"
            }
          ]
        },
        "dataFlows": [
          {
            "streams": [
              "Custom-FlowRunRawData"
            ],
            "destinations": [
              "[parameters('workspaceName')]"
            ],
            "transformKql": "source | project TimeGenerated = Time, EnvironmentName_g = toguid(EnvironmentName), FlowName_g = toguid(FlowName), DisplayName_s = DisplayName, RunName_s = RunName, StartTime_t = StartTime, EndTime_t = EndTime, Status_s = Status",
            "outputStream": "Custom-FlowRunHistory_CL"
          }
        ]
      }
    }
  ],
  "outputs": {
    "dataCollectionRuleId": {
      "type": "String",
      "value": "[resourceId('Microsoft.Insights/dataCollectionRules', parameters('dataCollectionRuleName'))]"
    }
  }
}
```

DCR では、次のプロパティを構成します。

| プロパティ | 設定内容 |
|:-|:-|
| ```dataCollectionEndpointId``` | データ収集エンドポイントのリソース ID を指定 |
| ```streamDeclarations``` | データ収集エンドポイントで受信するソースデータ (JSON) の列を定義 |
| ```destinations``` | 宛先の Azure Log Analytics ワークスペース (リソース ID とワークスペース名) を指定 |
| ```dataFlows``` | データフローのルールを定義 |

以下より、```streamDeclarations``` プロパティと ```dataFlows``` プロパティについて、さらに深掘りします。


#### streamDeclarations プロパティ

[先日の投稿](https://qiita.com/tetsuya-ooooo/items/356b11cd30abc856fb12#power-automate-%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89-%E3%83%95%E3%83%AD%E3%83%BC%E3%81%AE%E5%AE%9F%E8%A1%8C%E5%B1%A5%E6%AD%B4%E3%82%92%E5%8F%8E%E9%9B%86)で、ログとして保存したい情報をピックアップしたところを参考に、各列の名前とデータ型を定義します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/fdd24a72-17bd-a69b-0095-04d7ae07ed92.png)

[Azure Monitor HTTP Data Collector API を利用した場合](https://qiita.com/tetsuya-ooooo/items/356b11cd30abc856fb12#log-analytics-%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3%81%AB%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88)では、```TimeGenerated``` フィールド (ログが記録されたときのタイムスタンプ) 値は指定してもしなくてもどちらでも良かったですが、Logs ingestion API ではこれは必須となりますので、```TimeGenerated``` フィールドに挿入するための列 (上図では ```Time```) を追加します。

```json:streamDeclarations&#x20;プロパティ&#x20;(抜粋)
"streamDeclarations": {
  "Custom-FlowRunRawData": {
    "columns": [
      {
        "name": "Time",
        "type": "datetime"
      },
      {
        "name": "EnvironmentName",
        "type": "string"
      },
      {
        "name": "FlowName",
        "type": "string"
      },
      {
        "name": "DisplayName",
        "type": "string"
      },
      {
        "name": "RunName",
        "type": "string"
      },
      {
        "name": "StartTime",
        "type": "datetime"
      },
      {
        "name": "EndTime",
        "type": "datetime"
      },
      {
        "name": "Status",
        "type": "string"
      }
    ]
  }
}
```

#### dataFlows プロパティ

配下の各パラメーターについて説明します。

- **streams**

入力ストリームの名前を指定します。
ここでは、```streamDeclarations``` プロパティの ```Custom-FlowRunRawData``` を指定します。

```json:streams&#x20;(抜粋)
"streams": [
  "Custom-FlowRunRawData"
]
```

- **destinations**

フローがデータを送信する宛先の名前を指定します。
ここでは、宛先となる Azure Log Analytics ワークスペース名を指定します。

```json:destinations&#x20;(抜粋)
"destinations": [
  "[parameters('workspaceName')]"
]
```

- **transformKql**

ソースデータをカスタムテーブルに保存する前に変換するためのクエリを記述します。チュートリアルを参考に [Kusto クエリ言語](https://docs.microsoft.com/ja-jp/azure/data-explorer/kusto/query/?WT.mc_id=AZ-MVP-5003113)で書きました。

```json:transformKql&#x20;(抜粋)
"transformKql": "source | project TimeGenerated = Time, EnvironmentName_g = toguid(EnvironmentName), FlowName_g = toguid(FlowName), DisplayName_s = DisplayName, RunName_s = RunName, StartTime_t = StartTime, EndTime_t = EndTime, Status_s = Status"
```

記述したクエリについて、以下で簡単に説明します。

```:ソースデータをカスタムテーブルに保存する前に変換するためのクエリ
source
| project
 TimeGenerated = Time,
 EnvironmentName_g = toguid(EnvironmentName),
 FlowName_g = toguid(FlowName),
 DisplayName_s = DisplayName,
 RunName_s = RunName,
 StartTime_t = StartTime,
 EndTime_t = EndTime,
 Status_s = Status
```

```TimeGenerated``` フィールドに挿入する値は[前述した](#streamdeclarations-%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3)とおり必須なので、そのために用意した ```Time``` 列の値を挿入します。

```EnvironmentName_g``` と ```FlowName_g``` フィールドのデータ型は ```guid``` であり、ソースデータの ```EnvironmentName``` と ```FlowName``` 列のデータ型は ```string``` なので、値を変換して挿入します。

その他のフィールドはソースデータ側、カスタムテーブル側ともに同じデータ型なので、そのまま値を挿入します。

- **outputStream**

[前述で移行したカスタムテーブル](#%E7%A7%BB%E8%A1%8C%E5%AF%BE%E8%B1%A1%E3%81%AE%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%A8%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0-%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%82%92%E7%A7%BB%E8%A1%8C%E3%81%99%E3%82%8B)名を指定します。
ここでは、```Custom-FlowRunHistory_CL``` を指定します。このカスタムテーブル名の先頭にプリフィックス ```Custom-``` が付いていますが、これはデータ収集ルールに宛先がカスタムテーブルであることを示すために付いています。

```json:outputStream&#x20;(抜粋)
"outputStream": "Custom-FlowRunHistory_CL"
```

### デプロイ

[前述で作成した ARM テンプレート](#arm-%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)を用いてデプロイします。


#### 必要な情報をメモっておく

デプロイする際に必要な情報 (リソース ID) をメモっておきます。

- **Workspace Resource Id**

宛先の Azure Log Analytics ワークスペースの「リソース ID」をメモっておきます。対象リソースの [JSON ビュー] を開いて「リソース ID」を入手します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/68122d98-5c15-a94a-0b1a-0670c8288b4b.png)

- **Endpoint Resource Id**

データ収集エンドポイントの「リソース ID」をメモっておきます。先ほどと同様の手順で「リソース ID」を入手します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/ad9c4e46-f257-09be-2a07-b38bebff5ec1.png)


#### カスタム テンプレートのデプロイ

それでは、デプロイします。

[カスタム テンプレートのデプロイ] を開き、[エディターで独自のテンプレートを作成する] をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/d0364556-d20d-079b-793c-74b206af05d7.png)

エディターに[前述で作成した ARM テンプレート](#arm-%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)をコピペして [保存] をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/f42f198e-b8cd-b734-b0b0-aebc94126254.png)

各パラメーターを入力して [確認と作成] をクリックし、データ収集ルールを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/8bc00793-5827-2f18-017f-ef79ff633ca6.png)

| パラメーター | 設定値 |
|:-|:-|
| サブスクリプション | デプロイ先のサブスクリプション |
| リソース グループ | デプロイ先のリソース グループ |
| リージョン | デプロイ先のリージョン |
| Data Collection Rule Name | デプロイするデータ収集ルールの名前 |
| Location | リージョンと同じもの |
| Workspace Resource Id | [先ほど入手した Azure Log Analytics ワークスペースのリソース ID](#%E5%BF%85%E8%A6%81%E3%81%AA%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%A1%E3%83%A2%E3%81%A3%E3%81%A6%E3%81%8A%E3%81%8F) |
| Workspace Name | Azure Log Analytics ワークスペース名 |
| Endpoint Resource Id | [先ほど入手したデータ収集エンドポイントのリソース ID](#%E5%BF%85%E8%A6%81%E3%81%AA%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%A1%E3%83%A2%E3%81%A3%E3%81%A6%E3%81%8A%E3%81%8F) |


### 「監視メトリック発行者」ロールを割り当てる

データ収集ルールが作成できたら、アプリケーションにそのルールへのアクセス許可を付与します。
[先日の投稿](https://qiita.com/tetsuya-ooooo/items/b29ae8beb93cdea39dc8)で Azure AD に登録したアプリケーションのサービス プリンシパルに[「監視メトリック発行者」](https://docs.microsoft.com/ja-jp/azure/role-based-access-control/built-in-roles?WT.mc_id=AZ-MVP-5003113#monitoring-metrics-publisher)ロールを割り当てます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/bf8a16bb-0d00-5123-be61-6e9ba6e333a0.png)

これにより、アプリケーションがデータ収集エンドポイントとデータ収集ルールにデータを送信できるようになります。


# ロジックアプリで収集した Power Automate クラウド フローの実行履歴を Logs ingestion API を使って Azure Log Analytics ワークスペースにインポート


## Azure AD アクセストークンを取得

Logs ingestion API にアクセスするために、まず Azure AD からアクセストークンを取得します。

[先日の投稿](https://qiita.com/tetsuya-ooooo/items/b29ae8beb93cdea39dc8)で Azure AD に登録したアプリケーションから以下の値をメモっておきます。

- アプリケーション (クライアント) ID
- クライアント シークレット
- ディレクトリ (テナント) ID

そして、HTTP アクションの各パラメーターを入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/039f41ad-6f34-c5fd-d3b5-69d4339af5bb.png)

| パラメーター | 設定値 |
|:-|:-|
| メソッド | ```POST``` |
| URI | ```https://login.microsoftonline.com/{ディレクトリ (テナント) ID}/oauth2/v2.0/token``` |
| ヘッダー | キー : ```Content-Type```<br>値 : ```application/x-www-form-urlencoded``` |
| 本文 | ```client_id={アプリケーション (クライアント) ID}&scope=https://monitor.azure.com//.default&client_secret={クライアント シークレット}&grant_type=client_credentials``` |


## Azure Log Analytics ワークスペースにインポート

### 必要な情報をメモっておく

- **データ収集エンドポイントのログ インジェスト URI**

[前述で作成したデータ収集エンドポイント](#%E3%83%87%E3%83%BC%E3%82%BF%E5%8F%8E%E9%9B%86%E3%82%A8%E3%83%B3%E3%83%89%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)の「ログ インジェスト URI」をメモっておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/181c6c4b-78aa-ca4a-bde7-adbb13145ed2.png)

- **データ収集ルールの Immutable Id**

[前述で作成したデータ収集ルール](#%E3%83%87%E3%83%BC%E3%82%BF%E5%8F%8E%E9%9B%86%E3%83%AB%E3%83%BC%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90)の「Immutable Id」をメモっておきます。対象リソースの [JSON ビュー] を開いて、リソース JSON から「immutableId」の値を入手します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/824f3fb4-103a-9cd5-f4f1-67493290876d.png)


### Logs ingestion API にログを POST

Logs ingestion API の完全な URI は、以下のようになります。

```http:
{DCE のログ インジェスト URI}/dataCollectionRules/{DCR の Immutable Id}/streams/{ストリーム名}
```

```http:(例)
https://ppt-dev-sys-d-dce-bat-1-xxxx.japaneast-1.ingest.monitor.azure.com/dataCollectionRules/dcr-dd0d8a0722db4b6d886ddaa9f5b19691/streams/Custom-FlowRunRawData
```

そして、HTTP アクションの各パラメーターを入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/e448376e-7c72-9cd0-a834-0eb077a29fff.png)

| パラメーター | 設定値 |
|:-|:-|
| メソッド | ```POST``` |
| URI | Logs ingestion API の完全な URI |
| ヘッダー | (1)キー : ```Authorization```<br>(1)値 : ```Bearer {Azure AD アクセストークン}```<br>(2)キー : ```Content-Type```<br>(2)値 : ```application/json``` |
| クエリ | キー : ```api-version```<br>値 : ```2021-11-01-preview``` |
| 本文 | [「Get Flow Run」アクションの実行後](https://qiita.com/tetsuya-ooooo/items/356b11cd30abc856fb12#power-automate-%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89-%E3%83%95%E3%83%AD%E3%83%BC%E3%81%AE%E5%AE%9F%E8%A1%8C%E5%B1%A5%E6%AD%B4%E3%82%92%E5%8F%8E%E9%9B%86)にログとしてピックアップした情報を格納した変数 |


# Azure Log Analytics ワークスペースで検索してみる

[先日の投稿](https://qiita.com/tetsuya-ooooo/items/356b11cd30abc856fb12#azure-log-analytics-%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%A7%E6%A4%9C%E7%B4%A2%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B)と同様に、送信されたログデータが格納されているか確認するため、以下のクエリを実行します。

```
FlowRunHistory_CL 
| order by TimeGenerated desc nulls last 
| project TimeGenerated, DisplayName_s, RunName_s, StartTime_t, EndTime_t, Status_s, EnvironmentName_g, FlowName_g
```

同様に Power Automate クラウド フローの実行履歴が格納されていることが確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/10b01c88-13d0-2acd-4a4f-702274d9ea58.png)


# まとめ

この投稿では、HTTP Data Collector API で作成されたテーブルをデータ収集ルールベースのものに移行し、ログデータのインポートする手段を HTTP Data Collector API から Logs ingestion API に置き換えました。

データ収集ルールベースのテーブルに移行しても HTTP Data Collector API で Azure Log Analytics ワークスペースにログデータをインポートすることはできます。ただし、[データのエクスポート](https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/logs-data-export?WT.mc_id=AZ-MVP-5003113&tabs=portal)ルールを追加していたとしても、HTTP Data Collector API を介したログデータはこのルールには適用されません (エクスポートされません) でした。

また、このようにカスタムテーブルを移行するケースでデータ収集ルールを作成する場合、現時点 (執筆時) では ARM テンプレートを用いてデプロイする方法しかありません。今後に期待しましょう。