在 Azure SRE Agent 中使用基礎結構即程式碼進行部署

可透過Azuremicrosoft/sre-agent倉庫中的範本,以程式化方式部署 SRE 代理程式。

Tip

  • 四個部署後端: Bicep、Terraform、PowerShell,以及Azure開發者CLI
  • 預建配方 用於常見場景(Azure 監視器、PagerDuty、Dynatrace)
  • 一個 指令可以從零切換到執行中的代理: ./bin/deploy.sh my-agent/
  • 第 2 天作業:使用相同的 CLI 工具匯出、複製、比較差異及驗證代理程式

概觀

microsoft/sre-agent 儲存庫提供可用於部署 SRE 代理Azure生產環境的 IaC 範本。 利用這些範本來:

  • 在 CI/CD 管線中自動化部署
  • Git 中的版本控制代理設定
  • 在不同環境間複製代理程式(從開發環境到預備環境,再到生產環境)
  • 使用預設配方來標準化設定

先決條件

Tool 必須用於 Install
Azure CLI 2.x+ 所有後端 安裝
jq 所有後端 brew install jqapt install jq
Terraform 1.5+ 僅限 Terraform 安裝
PowerShell 7+ 僅限於 PowerShell 安裝
Azure Developer CLI 僅限 azd 安裝

Azure 權限: 訂閱擁有者,或貢獻者 + 使用者存取管理員。

確認必要條件:

git clone https://github.com/microsoft/sre-agent.git
cd sre-agent/sreagent-templates
bash bin/check-prerequisites.sh

快速入門

# 1. Generate config from a recipe
./bin/new-agent.sh --recipe azmon-lawappinsights --non-interactive \
  --set agentName=my-agent \
  --set resourceGroup=rg-my-agent \
  --set location=eastus2 \
  --set targetRGs=rg-my-workload \
  -o my-agent/

# 2. Deploy (~3 minutes)
./bin/deploy.sh my-agent/

部署後,CLI 會列印入口網站 URL 與資料平面端點:

Agent (portal):  https://sre.azure.com/#/agent/{sub}/{rg}/my-agent
Data plane:      https://my-agent.eastus2.azuresre.ai

複製現有的代理人

./bin/clone-agent.sh \
  --from-agent prod-agent --from-rg rg-prod \
  --set agentName=staging-agent --set resourceGroup=rg-staging \
  -o staging-agent/

匯出原始代理的設定,並部署到新的名稱和資源群組。 這對於跨環境複製非常有用。

食譜

為常見情境如 Azure 監視器 警示回應、PagerDuty 事件管理及 Dynatrace 整合提供預先建置的起點。 Microsoft 經常新增配方。

瀏覽範本 中的可用食譜。

# List available recipes
ls recipes/

# Generate config from a recipe
./bin/new-agent.sh --recipe azmon-lawappinsights \
  --set agentName=prod-agent \
  --set resourceGroup=rg-prod-agent \
  --set location=swedencentral \
  -o prod-agent/

部署後端

這些範本支援四個部署後端。 每個都使用相同的設定目錄——選擇最適合你環境的那個:

Backend 指令 何時使用
Bicep ./bin/deploy.sh my-agent/ 預設 - 用途 az deployment sub create
Terraform ./bin/deploy-tf.sh my-agent/ Terraform 管理的基礎設施
PowerShell .\bin\ps\Deploy-Agent.ps1 -InputPath .\my-agent\ Windows / PowerShell 7 環境
Azure 開發人員命令列介面 cd my-agent/ && azd up 以 azd 為基礎的工作流程

所有後端都支援 --what-if / --dry-run 驗證,無需部署。 完整指令參考、旗標與需求,請參閱倉庫 README。

設定目錄結構

當你執行 new-agent.sh時,它會產生一個設定目錄:

my-agent/
├── agent.json              # Agent identity, model, settings
├── connectors.json         # Data sources (App Insights, Log Analytics, MCP endpoints)
├── connectors.secrets.env  # Secrets — auto-gitignored
├── roles.yaml              # RBAC role assignments
├── config/
│   ├── skills/             # Skill instructions (YAML + markdown)
│   ├── subagents/          # Subagent definitions (YAML + markdown instructions)
│   ├── hooks/              # Safety guardrails (YAML)
│   ├── common-prompts/     # Shared prompt instructions
│   └── repos/              # Code repository connections
├── automations/
│   ├── scheduled-tasks/    # Recurring automated tasks
│   ├── incident-filters/   # Incident routing rules
│   └── incident-platforms/  # Incident platform connections
└── data/
    ├── knowledge/          # Upload docs, runbooks, reference material
    └── synthesized-knowledge/ # Agent's learned context

在部署前,請編輯這些檔案以自訂您的代理程式。

部署內容

部署分為兩個階段。

第一階段:ARM(基礎設施)

資源 用途
資源群組 所有資源的容器
使用者指派的管理身份 代理程式的 Azure 身分識別
Log Analytics 工作區 記錄和診斷
Application Insights Telemetry
SRE 代理程式(Microsoft.App/agents 代理人本身
RBAC 角色指派 檢視者、監視檢視者、記錄分析檢視者、SRE 代理程式管理員
連結器、技能、子代理、工具 透過 ARM 子資源進行代理設定

第二階段:資料平面(ARM 還無法處理的設定)

資源 資料平面的由來
程序代碼存放庫 要求 Git 認證(PAT/OAuth)
勾點 在部署時尚未作為 ARM 子資源公開
HTTP 觸發程序 由伺服器端產生,並具備專屬 URL
知識檔案 二進位檔案上傳
插件配置 僅限資料平面的 API

Note

apply-extras.sh 腳本會在 Bicep/Terraform 部署完成後自動處理第二階段。 如果資料平面權杖無法使用 (例如在受限制的 CI/CD 環境中),它會列印已略過的內容,讓您可以從具有存取權的機器完成。

重要參數

當您使用 new-agent.sh --set 來產生設定時,請輸入例如 agentNameresourceGrouplocationtargetRGs 之類的值。 此過程將這些數值轉換為 Bicep 或 Terraform 的部署參數。

完整參數清單、功能切換及其預設值,請參閱倉庫 README。

第 2 天作業

範本包含用於持續管理的腳本:

操作 其功能是什麼
出口 從執行中的代理建立設定目錄——對備份或遷移很有用
複製 匯出一個原始代理,並部署到新的名稱和資源群組
Diff 把你的本地設定和現場代理比較一下
Verify 針對即時代理執行 22 項檢查(連接器、技能、子代理、掛鉤)

關於指令與使用情況,請參閱倉庫 README。