可透過Azure
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 jq 或 apt 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 來產生設定時,請輸入例如 agentName、resourceGroup、location 和 targetRGs 之類的值。 此過程將這些數值轉換為 Bicep 或 Terraform 的部署參數。
完整參數清單、功能切換及其預設值,請參閱倉庫 README。
第 2 天作業
範本包含用於持續管理的腳本:
| 操作 | 其功能是什麼 |
|---|---|
| 出口 | 從執行中的代理建立設定目錄——對備份或遷移很有用 |
| 複製 | 匯出一個原始代理,並部署到新的名稱和資源群組 |
| Diff | 把你的本地設定和現場代理比較一下 |
| Verify | 針對即時代理執行 22 項檢查(連接器、技能、子代理、掛鉤) |
關於指令與使用情況,請參閱倉庫 README。