Azure Container InstanceでSpring Batchのアプリを動かす(5)ログをAzure Monitorログに送る

Azure Container InstanceでSpring Batchのアプリを動かすことをやっています。過去の内容は以下を参照してください。

今回は、ログをAzure Monitorログ(Log Analytics ワークスペース)に送ることをやってみます。

参考記事

マイクロソフトのドキュメントに参考となる記事があります。その記事を参考にして作業を進めます。

docs.microsoft.com

TerraformでLog Analytics ワークスペースを作成する

これまでTerraformで環境を作っていたので、ここでもTerraformで環境を作ります。Log Analytics ワークスペースを作成するには以下のように記述します。

resource "azurerm_log_analytics_workspace" "log" {
  location            = azurerm_resource_group.rg.location
  name                = var.log_analytics_workspace_name
  resource_group_name = azurerm_resource_group.rg.name
}

上記では名前とリソースグループ名、ロケーションだけを指定しています。これだけでも動きますが、細かい設定をするために参考となるドキュメントは以下にあります。

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/log_analytics_workspace

Container Instanceと紐づける

作成したAzure Monitorログ(Log Analytics ワークスペース)とContainer Instanceとを紐づけます。azurerm_container_groupの中でdiagnosticsブロックの下にlog_analyticsブロックをつくり、そこでAzure Monitorログ(Log Analytics ワークスペース)のidやキーを指定します。Terraformでの設定例は以下の通り。

data "azurerm_log_analytics_workspace" "log" {
  name                = var.log_analytics_workspace_name
  resource_group_name = var.app_resource_group_name
}

resource "azurerm_container_group" "aci" {
  location            = var.app_resource_group_location
  name                = var.container_instance_name
  os_type             = "linux"
  resource_group_name = var.app_resource_group_name
  # 省略
  # Log Analytics Workspaceの設定
  diagnostics {
    log_analytics {
      workspace_id = data.azurerm_log_analytics_workspace.log.workspace_id
      workspace_key = data.azurerm_log_analytics_workspace.log.primary_shared_key
    }
  }
}

動かしてみる

これで準備は完了。Spring Batchのアプリを動かすと、ログがAzure Monitorログ(Log Analytics ワークスペース)に送られます。プログラムとしてAzure Monitorログ(Log Analytics ワークスペース)に送信ために特別なことは何もしておらず、標準出力に出力された内容がそのままAzure Monitorログ(Log Analytics ワークスペース)に送信されます。

また、上記のドキュメントにも書かれていますが、Azure Monitorログ(Log Analytics ワークスペース)にログが送信されるようになるには最大で10分ほど待つ必要があるので、慌てずにじっくり待ちましょう。

Container Instance起動後、Azure Monitorログ(Log Analytics ワークスペース)を確認するとContainerInstanceLog_CLの中身を確認すると、以下のようにログが送信されていました。

f:id:miyohide:20211016214039p:plain

メッセージを確認したいので、project演算子を使って時刻とメッセージを確認します。

docs.microsoft.com

結果は以下の通り。

f:id:miyohide:20211016214406p:plain

プログラムやSpring Batchによるログ出力が確認できました。