2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure Log Analytics の Log Ingest API (ログインジェスト API) によるデータ取り込みの方法 (with Postman)

Last updated at Posted at 2023-03-25

本記事について

Azure Log Analytics に任意のデータを取り込む時に用いられる方法として、旧来 Log Analytics HTTP Data Collector API という Web API がありました。ただ、こちらはリリースからずっとパブリックプレビュー状態であり、それに代わるものが求められていました。そして、2022年に新しくリリースされたのが、Azure Monitor Log Ingest API (ログインジェスト API) になります。

本記事では、まだまだ情報が少ないこの Log Ingest API について、特に Postman を利用してデータ取り込みを行っていく方法を Step by Step で見ていきたいと思います。(公式ドキュメントはチュートリアルで PowerShell を使っていますが、少し本質的な部分がわかりづらいため、本記事では Postman を用い最も基本的なところを確認していきます。)

なお、実際に活用する際には、Python SDK などを利用することになるかと思います。こちらについても記事を書いておりますので、合わせてご覧いただければと思います。

Log Ingest API でデータを取り込む

Azure AD アプリケーションの準備

Log Ingest API を利用するには、Azure AD アプリケーションが必要になります。これは、Azure AD のアプリの登録から作成します。

image.png

+新規登録をクリックし、名前を入れて登録します。

image.png

アプリのページを開いたら、証明書とシークレットタブから「新しいクライアントシークレット」へ進みシークレットを作成します。追加する際に、シークレットの値を控えておきます。また、アプリケーション ID (クライアント ID) も同じく後ほど利用します。

image.png

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

次にデータ収集エンドポイントを作成します。

image.png

image.png

カスタムログテーブルの作成と データ収集ルール (DCR) の作成

Log Analytics のテーブルタブで、今回 Log Ingest API 経由でログを送る先となるテーブルを作成します。DCR ベースの新しいカスタムログを作成します。

image.png

テーブル名を入れ、新しい Data Collection Rule (DCR) をひとつ作成します。データ収集エンドポイントは先ほどのものを選びます。

image.png

次にスキーマとサンプルですが、今回は以下の JSON を使ってみます。ローカルにファイルを保存してアップロードします。

{
    "TimeGenerated": "2023-03-25 14:42:00",
    "User": "Yoshiaki Oi",
    "Result": "Success"
}

image.png

「次へ」へ進み作成します。

DCR のアクセス許可

作成した DCR のアクセス制御で、さきほどのアプリケーションに監視メトリック発行者の権限を付与します。

image.png

Postman の準備とリクエストの送信

Postman から HTTP リクエストを送ります。

Bearer トークンの取得

まず、Log Ingest API のリクエストを投げるのに必要な Bearer トークンを取得します。この Bearer トークンはさきほど作成した Azure AD アプリケーションを使って受け取ります。

POST https://login.microsoftonline.com/<Azure AD テナント ID>/oauth2/token

Header

Content-Type: application/x-www-form-urlencoded

Body

grant_type: client_credentials
client_id: <Azure AD アプリケーションのアプリケーションID (クライアントID)>
client_secret: <Azure AD アプリケーションのシークレット>
resource: https://monitor.azure.com/

image.png

Log Ingest API へリクエストを送信

そして、その Bearer トークンを使って Log Ingest API にリクエストを投げます。

POST https://<データ収集エンドポイントのURI>/dataCollectionRules/<DCR の Immutable ID>/streams/Custom-<カスタムログのテーブル名 (_CL含む)>?api-version=2021-11-01-preview

< > のデータはそれぞれ下記のように収集します。

  • データ収集エンドポイントの URI: これはデータ収集エンドポイントのページに書かれています。(ログインジェストと書かれているものです。)

image.png

  • DCR の Immutable ID: これは DCR ページで概要を JSON ビューに切り替えると出てきます。

image.png

Header と Body はそれぞれ下記のようにします。Body は JSON を配列の括弧でくくります。(レコードが一個だったとしても。)

Header

Authorization: Bearer <取得した Bearer トークン>
Content-Type: application/json

Body

[
    {
        "TimeGenerated": "2023-03-25 10:23:00",
        "User": "Yoshiaki Oi",
        "Result": "Success"
    },
     {
        "TimeGenerated": "2023-03-25 11:12:00",
        "User": "Taro Maikuro",
        "Result": "Failure"
    }
]

リクエストを正しく送信できると、204 No Content で返ってきますが、検索するとデータが入っていることを確認できます。

image.png

image.png

以上が、Log Ingest API を使って Log Analytics ワークスペースにログデータを送信する方法になります。

最後に

本記事では、新しくリリースされた Log Ingest API を使ったログデータの取り込み方法を見ていきました。本記事の内容が Azure Log Analytics や Sentinel を活用する際の一助となれば幸いです。

また、姉妹編として、AMA と DCR をベースとしたサーバーから取り込むカスタムログの方式に関しても記事を公開しました。アプリケーションコードの開発なしで、サーバーからテキストログを簡単に取りこむ方法についてお探しの方はこちらをご覧ください。

*本稿は、個人の見解に基づいた内容であり、所属する会社の公式見解ではありません。また、いかなる保証を与えるものでもありません。正式な情報は、各製品の販売元にご確認ください。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?