Token导航 LogoToken导航TokenDH.com
Private Vnet Observability Sample logo
运维云端未说明官方级别未说明来源级核验

Private Vnet Observability Sample

MCP Server

通过VNet集成的MCP服务器作为查询代理,Azure SRE Agent可以在私有VNet中调查和调试资源,即使Log Analytics查询被Private Link阻止。

工具数

9

提示词数

0

GitHub Stars

0

资源数

0
Bicep云端部署Docker

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

BandaruDheeraj

提供方

BandaruDheeraj

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

私有Direct3D观察性示例

演示当日志分析查询发生以下情况时,Azure SRE代理如何调查和调试私有ExpressRoute中的资源 被私人链接阻止--使用Direct3D集成的MCP服务器作为查询代理。

场景概述

问题:您已使用配置了Azure Monitor专用链接作用域(AMPLS) queryAccessMode: PrivateOnly 并禁用了日志分析工作区上的公共查询访问。现在 所有外部查询都被阻止--包括来自Azure SRE代理的那些。

SRE代理价值:通过在ExpressRoute内部署MCP服务器,SRE代理仍然可以查询日志。MCP服务器在受信任的网络边界内运行,并代表代理查询日志分析。

建筑

┌─────────────────────────────────────────────────────────────────────────────┐
│                   Private VNet (VNet-Integrated Environment)                │
│                                                                             │
│  ┌─────────────────────────────────────────────────────────────────────────┐│
│  │                  Azure Container Apps Environment                       ││
│  │                       (VNet-Integrated)                                 ││
│  │                                                                          ││
│  │  ┌────────────────────────────────────────────────────────────────┐     ││
│  │  │           Log Analytics MCP Server                             │     ││
│  │  │   log-analytics-mcp-vnet.*.azurecontainerapps.io              │     ││
│  │  │                                                                 │     ││
│  │  │  Tools: query_logs, list_tables, get_workspace_info,          │     ││
│  │  │         analyze_errors (multi-source), check_vm_health        │     ││
│  │  │         + analyze_linux_errors, analyze_windows_errors,       │     ││
│  │  │           analyze_container_errors, analyze_azure_failures    │     ││
│  │  │                                                                 │     ││
│  │  │  Auth: Managed Identity (Log Analytics Reader)                 │     ││
│  │  └──────────────────────────┬─────────────────────────────────────┘     ││
│  │                             │                                            ││
│  └─────────────────────────────┼────────────────────────────────────────────┘│
│                                │ Query via Private Endpoint                  │
│                                ▼                                             │
│  ┌─────────────────────────────────────────────────────────────────────────┐│
│  │                    Log Analytics Workspace                              ││
│  │                                                                          ││
│  │  publicNetworkAccessForQuery: Disabled                                  ││
│  │  AMPLS queryAccessMode: PrivateOnly                                     ││
│  └─────────────────────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────────────────────┘
                                 │
                                 │ Streamable HTTP (MCP Protocol)
                                 ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                         Azure SRE Agent                                     │
│                    (Outside the VNet)                                       │
│                                                                             │
│  ✓ Calls MCP server tools over HTTPS                                       │
│  ✓ MCP server queries Log Analytics from inside VNet                       │
│  ✓ Results returned to agent for analysis                                  │
│  ✓ No direct VNet access required                                          │
└─────────────────────────────────────────────────────────────────────────────┘

关键见解

数据摄取查询访问 使用不同的网络路径:

路径方向访问
Azure监控代理→ 日志分析摄取可以使用私有端点或公共端点
外部查询→ 日志分析查询已屏蔽 通过私人链接
Direct3D MCP→ 日志分析查询允许 通过专用端点
SRE代理→ MCP服务器查询公共HTTPS(MCP协议)

先决条件

  • 具有参与者访问权限的Azure订阅
  • 已安装Azure CLI
  • Docker(用于构建MCP服务器镜像)

证明它有效

测试1:来自外部ExpressRoute的查询(已阻止)

curl -X POST "https://log-analytics-mcp.happydune-ad37d82a.eastus2.azurecontainerapps.io/mcp/" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "X-API-Key: your-api-key" \
  -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"list_tables"},"id":1}'

结果:阻塞

InsufficientAccessError: The query was blocked due to private link configuration.

测试2:从Direct3D内部查询(成功)

curl -X POST "https://log-analytics-mcp-vnet.redbay-525c1802.eastus.azurecontainerapps.io/mcp/" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "X-API-Key: your-api-key" \
  -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"list_tables"},"id":1}'

结果:成功

{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"Found 15 tables..."}]}}

快速开始

1.部署ExpressRoute集成环境

# Create resource group
az group create --name vnet-test-rg --location eastus

# Create VNet
az network vnet create --resource-group vnet-test-rg --name vnet-test-vnet \
  --address-prefix 10.0.0.0/16 --subnet-name infrastructure --subnet-prefix 10.0.0.0/23

# Create VNet-integrated Container Apps environment
az containerapp env create --name vnet-test-env --resource-group vnet-test-rg \
  --location eastus --infrastructure-subnet-resource-id /subscriptions/.../infrastructure

# Create Log Analytics workspace
az monitor log-analytics workspace create --resource-group vnet-test-rg \
  --workspace-name workspace-vnettest --location eastus

2.配置专用链接(阻止公共查询)

# Create AMPLS and link workspace
az monitor private-link-scope create --name vnet-test-ampls --resource-group vnet-test-rg

# Set to Private Only
az monitor private-link-scope update --name vnet-test-ampls --resource-group vnet-test-rg \
  --query-access PrivateOnly

# Disable public query access
az monitor log-analytics workspace update --resource-group vnet-test-rg \
  --workspace-name workspace-vnettest --set properties.publicNetworkAccessForQuery=Disabled

3.部署MCP服务器

# Create ACR (VNet environments can't pull from public registries)
az acr create --resource-group vnet-test-rg --name yourregistryname --sku Basic

# Build and push image
az acr build --registry yourregistryname --image log-analytics-mcp:latest .

# Deploy with Managed Identity
az containerapp create --name log-analytics-mcp-vnet --resource-group vnet-test-rg \
  --environment vnet-test-env --image yourregistryname.azurecr.io/log-analytics-mcp:latest \
  --target-port 8000 --ingress external --system-assigned

# Grant Log Analytics Reader role
az role assignment create --assignee-object-id $(az containerapp show ...) \
  --role "Log Analytics Reader" --scope /subscriptions/.../workspaces/workspace-vnettest

4.配置SRE代理

name: PrivateVNetObservabilityAgent
mcp_tools:
  - LogAnalyticsMCP

tool_definitions:
  LogAnalyticsMCP:
    type: mcp
    transport: streamable_http
    url: https://log-analytics-mcp-vnet.*.azurecontainerapps.io/mcp/
    headers:
      X-API-Key: "${MCP_API_KEY}"

5.使用SRE代理进行调试

“显示我的私人日志分析工作区中可用的表”
“从应用程序日志中查询最近10个错误”

6.清理

az group delete --name vnet-test-rg --yes --no-wait

你将学到什么

  • 在ExpressRoute集成的容器应用程序中部署MCP服务器
  • 配置私有链接以阻止公共查询
  • 使用托管身份进行安全的Azure身份验证
  • 用于远程MCP访问的流式HTTP传输

此示例中的文件

文件描述
deploy-sample.ps1全面环境部署
inject-failure.ps1模拟应用程序问题
fix-issue.ps1应用补救措施
cleanup.ps1删除所有资源
blog-post.md完整教程文章

预计成本

资源小时成本备注
容器应用程序(MCP服务器)~0.05美元消费计划
日志分析摄取量~0.10基于日志量
集装箱登记(基本)~0.01每小时
总计约0.16美元/小时用于演示持续时间
💡 小贴士:演示结束后立即运行清理,以最大限度地降低成本。

证券收益

该架构提供:

  1. 已强制执行查询阻止 - publicNetworkAccessForQuery: Disabled 实际上阻止了外部查询
  2. MCP作为可信代理 -只有WM_MCP服务器可以查询日志
  3. 管理身份 -没有存储秘密,Azure处理身份验证
  4. API密钥保护 -MCP端点需要身份验证
  5. 审计跟踪 -容器应用程序中记录的所有MCP查询

关键模式:MCP作为查询代理

此示例演示了任何受Private Link保护的资源的可重用模式:

  1. 在ExpressRoute内部部署MCP服务器
  2. 通过托管身份授予其访问权限
  3. 通过流式HTTP公开它
  4. 配置SRE代理以将其用作工具

适用于:日志分析、应用程序洞察、Azure SQL、Cosmos DB等。

后续步骤

  • 为其他专用链路服务构建MCP服务器
  • 为特定于域的查询添加自定义工具
  • 配置警报以进行主动事件检测
  • 与Azure Monitor工作簿集成以用于仪表板

目录标签

目录标签

Bicep云端部署Docker本地部署日志查询私有网络Azure监控安全代理网络隔离

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

api-key

工具数量(toolCount,工具数)

9

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明api-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP