Azure 的 Log Analytics Workspace

在 Azure 中,Log Analytics Workspace 是屬於 monitor 指令集的一部分。要建立它,你需要使用 az monitor log-analytics workspace create

以下是完整的建立步驟與語法:


1. 建立 Log Analytics Workspace

你可以直接執行以下指令來建立一個新的工作區:

PowerShell

az monitor log-analytics workspace create `
  --resource-group $RESOURCE_GROUP `
  --workspace-name $WORKSPACE_NAME `
  --location $LOCATION

2. 為什麼需要它?

在建立 Container App Environment (CAE) 時,工作區就像是一個「大型儲存桶」,負責接收並儲存容器產生的所有日誌(Logs)和指標(Metrics)。


3. 自動化整合腳本 (從建立到取得 ID/Key)

為了讓你後續建立 Container App Environment 順利,建議依照這個流程操作:

PowerShell

# 設定 Workspace 名稱 (自定義)
$WORKSPACE_NAME = "log-pr-prod-twn-01"

# Step A: 建立 Workspace
az monitor log-analytics workspace create `
  --resource-group $RESOURCE_GROUP `
  --workspace-name $WORKSPACE_NAME `
  --location $LOCATION

# Step B: 取得該 Workspace 的 ID
$WORKSPACE_ID = az monitor log-analytics workspace show `
  --resource-group $RESOURCE_GROUP `
  --workspace-name $WORKSPACE_NAME `
  --query id --output tsv

# Step C: 取得該 Workspace 的 Key
$WORKSPACE_KEY = az monitor log-analytics workspace get-shared-keys `
  --resource-group $RESOURCE_GROUP `
  --workspace-name $WORKSPACE_NAME `
  --query primarySharedKey --output tsv

# Step D: 現在你可以成功建立 Container App Env 了!
az containerapp env create `
  --name $CONTAINERAPP_ENVIRONMENT `
  --resource-group $RESOURCE_GROUP `
  --location $LOCATION `
  --logs-workspace-id $WORKSPACE_ID `
  --logs-workspace-key $WORKSPACE_KEY

💡 小提醒

  • 定價層 (Pricing Tier):預設建立的會是 PerGB2018,這是目前的標準定價模式,按量計費。
  • 保留天數:預設通常會保留 30 天的日誌,如果需要更長,可以在建立後調整。
  • 資源群組:請確保 $RESOURCE_GROUP 已經先建立好了(az group create),否則指令會報錯。

你現在的 $RESOURCE_GROUP$LOCATION 變數都已經設定好了嗎?(例如 $LOCATION = "eastasia"


關於 Azure Log Analytics Workspace 的計費,這是一個「進來要錢、留著要錢、查一般不用錢」的邏輯。

以下是針對 2026 年最新計費模式的詳細拆解:


1. 實際會被收多少? (按量計費)

基本的「隨用隨付 (Pay-As-You-Go)」主要由兩個部分組成:

  • 資料擷取 (Ingestion): 每 GB 約為 $2.30 USD
    • 註:每個月通常有前 5 GB 的免費額度。
  • 資料保留 (Retention): * 前 31 天免費
    • 超過 31 天後,每 GB 每月約收 $0.10 USD
    • 如果你是為了法規需要存好幾年(長效保留),價格會降到每 GB 約 $0.02 USD

簡單試算:

如果你每天產生 1 GB 的日誌,一個月 30 GB。

(30GB – 5GB 免費) × $2.30 = $57.5 USD / 月 (約台幣 $1,800)。


2. 分析(查詢)需要錢嗎?

這取決於你使用的「資料層次 (Tier)」:

  • Analytics Logs (預設): 查詢完全免費。你可以無限次執行 KQL 查詢來產出圖表。
  • Basic Logs (基本日誌): 這種層次擷取很便宜(約 $0.50/GB),但查詢要錢,每掃描 1 GB 資料約收 $0.005 USD。適合存那些「平常不看,出事才查」的資料。
  • Search Job (搜尋作業): 如果要在海量歷史資料中搜尋,會按掃描量計費。

3. 定價層 (Pricing Tiers)

除了按量計費,如果你資料量很大,可以使用「承諾層級 (Commitment Tiers)」來打折:

層級每日資料量折扣幅度 (預估)
隨用隨付無限制無折扣
100 GB/日固定收 100 GB 的錢約打 85 折
200 GB/日固定收 200 GB 的錢約打 8 折
500 GB/日固定收 500 GB 的錢約打 7 折

4. 有 EPS (每秒事件數) 上限嗎?

Azure Log Analytics 沒有嚴格的 EPS 硬性上限,它是彈性擴張的,但有以下限流 (Throttling) 規則:

  • 資料擷取速度: 單一個 Workspace 通常支援到 6 GB/分鐘 的擷取速度。如果超過,可能會遇到延遲,但資料不會遺失(會排隊)。
  • API 調用限制: 如果你是透過 API 狂發日誌,每分鐘約有 200 次請求的限制。
  • 查詢限制: 為了防止惡意查詢榨乾資源,單一查詢最多跑 10 分鐘,且回傳結果上限為 30,000 列。

💡 專業建議:如何省錢?

  1. 過濾掉沒用的日誌:az containerapp 設定中,只傳送「錯誤 (Error)」或「重要 (Warning)」等級的日誌到 Workspace。
  2. 善用 Basic Tier: 對於開發環境或測試環境的日誌,可以設定為 Basic 模式來節省 75% 的擷取成本。
  3. 設定預算上限 (Daily Cap): 你可以設定 Workspace 每天最多只能收多少 GB(例如 5GB),避免因為程式 Bug 產生無窮迴圈 Log 導致帳單爆炸。

你目前預計每天產生的日誌量大約是多少?如果量很大,我可以直接幫你算承諾層級的划算程度。


台灣資案法規, log 可以放其他國家嗎?

這是一個非常關鍵的合規性問題。在台灣,Log(日誌)是否可以存放於境外,取決於你的產業屬性公司身分以及 Log 內是否包含個人資料(PII)

依照 2026 年最新的法規趨勢與《資通安全管理法》,我為你整理如下:


1. 公務機關與關鍵資訊基礎設施 (CII)

如果你屬於政府單位、公務機關,或受託開發的廠商:

  • 原則:禁止。 根據資安署規定,公務機關雲端資料(含備份、備援、日誌)的實體所在地不得位於大陸地區(含港澳)
  • 落地要求: 對於高等級資安系統,通常要求資料儲存與處理需在本國境內。即使使用雲端,也傾向於選擇有「台灣資料中心」的服務(如 Azure 台灣區域)。

2. 特殊監管產業 (如金融、醫療)

  • 金融業: 受金管會高度監管。雖然目前法規已放寬雲端委外,但如果 Log 涉及客戶交易明細或個人敏感資料,通常需要報備,且必須確保受監管單位(金管會)能隨時進行實地稽核。
  • 醫療業: 根據最新的電子病歷及相關法規,涉及病患隱私的資料與 Log 通常要求存放於境內。

3. 一般民間企業 (受《個資法》規範)

如果你是一般民間企業,Log 是否出境主要看 《個人資料保護法》第 21 條

  • 可以出境,但有條件: 除非主管機關(如經濟部、數發部)針對特定產業發布禁止令(例如過去曾禁止電商將個資傳往大陸),否則原則上可以國際傳輸。
  • 保護措施: 你必須確保接收資料的國家對個資有完善保護,且必須在隱私政策中告知用戶。

4. 實務建議:Log 存放於 Azure 的策略

既然你在使用 Azure,建議採取以下三種策略來規避法律風險:

方案 A:使用 Azure 台灣區域 (Taiwan North)

Azure 已經在台灣(桃園/板橋一帶)設立資料中心。

  • 做法: 建立 Log Analytics Workspace 時,將 Location 設定為 Taiwan North
  • 優點: 滿足最嚴苛的「資料落地」要求,且網路延遲最低。

方案 B:資料去識別化 (Data Masking)

如果你的應用程式 Log 包含使用者的 IP、Email、手機號碼,這些都屬於個資。

  • 做法: 在將 Log 送往 Log Analytics 之前,在應用程式端進行加密(Hash)或遮罩處理。
  • 優點: 脫敏後的 Log 就不再屬於《個資法》定義的個人資料,存放於新加坡(Southeast Asia)或美國通常沒有合規問題。

方案 C:分層儲存

  • 做法: * 一般日誌: 放境外(便宜)。
    • 稽核日誌 (Audit Logs): 包含敏感操作或個資,強制放在台灣境內或地端。

總結檢查清單

情況是否可放境外 (如新加坡/美國)?備註
公務機關 / 關鍵基設必須在本國境內。
涉及個資的 Log需評估需符合個資法國際傳輸規定。
純系統/效能 Log通常無法律限制。
中國地區 (含港澳)絕對禁止台灣資安法明確排斥。

提示: 雖然 Azure East Asia 指的是香港,但根據台灣目前的資安政策,高度建議不要將涉及個資或資安的 Log 放在香港,建議優先選擇 Taiwan North

你的應用程式是否會處理到身分證字號、信用卡號等敏感資料並印在 Log 裡呢?


az containerapp env create `
>>   --name $CONTAINERAPP_ENVIRONMENT `
>>   --resource-group $RESOURCE_GROUP `
>>   --location $LOCATION `
>>   --logs-workspace-id $WORKSPACE_ID `
>>   --logs-workspace-key $WORKSPACE_KEY
You cannot create a Containerapp environment in location taiwannorth. List of eligible locations: westus2, southeastasia, swedencentral, canadacentral, westeurope, northeurope, eastus, eastus2, eastasia, australiaeast, germanywestcentral, japaneast, uksouth, westus, centralus, northcentralus, southcentralus, koreacentral, brazilsouth, westus3, francecentral, southafricanorth, norwayeast, switzerlandnorth, uaenorth, canadaeast, westcentralus, ukwest, centralindia, japanwest, australiasoutheast, francesouth, spaincentral, italynorth, polandcentral, southindia.

看起來你撞到了 Azure 區域功能的硬傷。雖然 Taiwan North (台灣北部) 已經上線,但並非所有服務(特別是 Container Apps 這種比較新的託管服務)都會在第一時間支援該區域。

根據錯誤訊息,Taiwan North 目前還不支援 Container Apps Environment


1. 解決方案:更換區域

既然 Log 法律合規性是你考量的重點,且台灣暫時不可用,建議改用 Singapore (southeastasia)

  • 優點: 離台灣最近,延遲低,且非中國地區,符合多數民間企業的資安規範。
  • 注意: 如果你改了區域,Log Analytics Workspace 也必須重新建立在同一個區域,否則會報錯或產生跨區域流量費用。

2. 修正後的執行腳本

請依序執行以下步驟(我們把 Location 硬切到 southeastasia):

PowerShell

# 1. 更新區域變數
$LOCATION = "southeastasia"

# 2. 重新建立或更新 Workspace (要在同一個區域)
az monitor log-analytics workspace create `
  --resource-group $RESOURCE_GROUP `
  --workspace-name $WORKSPACE_NAME `
  --location $LOCATION

# 3. 重新抓取 ID 和 Key (確保是新的)
$WORKSPACE_ID = az monitor log-analytics workspace show --resource-group $RESOURCE_GROUP --workspace-name $WORKSPACE_NAME --query id -o tsv
$WORKSPACE_KEY = az monitor log-analytics workspace get-shared-keys --resource-group $RESOURCE_GROUP --workspace-name $WORKSPACE_NAME --query primarySharedKey -o tsv

# 4. 再次嘗試建立 Container App Environment
az containerapp env create `
  --name $CONTAINERAPP_ENVIRONMENT `
  --resource-group $RESOURCE_GROUP `
  --location $LOCATION `
  --logs-workspace-id $WORKSPACE_ID `
  --logs-workspace-key $WORKSPACE_KEY

3. 關於法規的應對 (當 Location 為新加坡時)

如果你的公司必須遵守「資料落地台灣」,而技術上又必須使用 Container Apps,目前有兩種彈性做法:

  • 混合雲模式: 把運算放在 southeastasia,但資料庫(SQL/Storage)放在 taiwannorth。Log 則透過 Diagnostic Settings 同步一份備份回台灣境內的 Storage Account。
  • 等待期: 依照 2026 年的進度,台灣區域的服務正在陸續補齊。你可以先在新加坡開發,等 taiwannorth 支援 Container Apps 後再進行區域轉移(Region Move)。

4. 如何檢查該區域支援哪些服務?

如果你想確認某個區域到底能不能用,可以執行:

PowerShell

az provider show -n Microsoft.App --query "resourceTypes[?resourceType=='managedEnvironments'].locations" -o json

這會直接噴出目前全球支援 Container App Environment 的所有清單,你可以看到 taiwannorth 是否在裡面。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *