🚀 快速安装
复制以下命令并运行,立即安装此 Skill:
npx @anthropic-ai/skills install microsoft/azure-skills/azure-kusto
💡 提示:需要 Node.js 和 NPM
Azure 数据资源管理器 (Kusto) 查询与分析
执行 KQL 查询并管理 Azure 数据资源管理器资源,用于对日志、遥测和时间序列数据进行快速、可扩展的大数据分析。
技能激活触发条件
当用户请求执行以下操作时,立即使用此技能:
- “查询我的 Kusto 数据库中的 [数据模式]”
- “显示我过去一小时来自 Azure 数据资源管理器的事件”
- “分析我的 ADX 集群中的日志”
- “在 [数据库] 上运行 KQL 查询”
- “我的 Kusto 数据库中有哪些表?”
- “显示 [表] 的架构”
- “列出我的 Azure 数据资源管理器集群”
- “按 [维度] 聚合遥测数据”
- “从我的日志创建时间序列图表”
关键指标:
- 提及“Kusto”、“Azure 数据资源管理器”、“ADX”或“KQL”
- 日志分析或遥测分析请求
- 时间序列数据探索
- 物联网数据分析查询
- SIEM 或安全分析任务
- 对大数据集的数据聚合请求
- 性能监控或 APM 查询
概述
此技能支持查询和管理 Azure 数据资源管理器 (Kusto),这是一种快速且高度可扩展的数据探索服务,专为日志和遥测数据优化。Azure 数据资源管理器使用 Kusto 查询语言 (KQL) 对数以十亿计的记录提供亚秒级查询性能。
关键能力:
- 查询执行:针对海量数据集运行 KQL 查询
- 架构探索:发现表、列和数据类型
- 资源管理:列出集群和数据库
- 分析:聚合、时间序列、异常检测、机器学习
核心工作流程
- 发现资源:列出订阅中可用的集群和数据库
- 探索架构:检索表结构以了解数据模型
- 查询数据:执行 KQL 查询以进行分析、过滤、聚合
- 分析结果:处理查询输出以获取洞察和报告
查询模式
模式 1:基础数据检索
从表中获取带有简单过滤的近期记录。
示例 KQL:
Events
| where Timestamp > ago(1h)
| take 100
用于:快速数据检查、近期事件检索
模式 2:聚合分析
按维度汇总数据以获取洞察和报告。
示例 KQL:
Events
| summarize count() by EventType, bin(Timestamp, 1h)
| order by count_ desc
用于:事件计数、分布分析、Top-N 查询
模式 3:时间序列分析
分析时间窗口内的数据以发现趋势和模式。
示例 KQL:
Telemetry
| where Timestamp > ago(24h)
| summarize avg(ResponseTime), percentiles(ResponseTime, 50, 95, 99) by bin(Timestamp, 5m)
| render timechart
用于:性能监控、趋势分析、异常检测
模式 4:联接与关联
组合多个表以进行跨数据集分析。
示例 KQL:
Events
| where EventType == "Error"
| join kind=inner (
Logs
| where Severity == "Critical"
) on CorrelationId
| project Timestamp, EventType, LogMessage, Severity
用于:根本原因分析、关联事件跟踪
模式 5:架构发现
在查询前探索表结构。
工具:kusto_table_schema_get
用于:理解数据模型、查询规划
关键数据字段
执行查询时,常见的字段模式:
- Timestamp:事件时间 (datetime) – 使用
ago()、between()、bin()进行时间过滤 - EventType/Category:用于分组的分类字段
- CorrelationId/SessionId:用于跟踪相关事件
- Severity/Level:用于按重要性过滤
- Dimensions:用于分组和过滤的自定义属性
结果格式
查询结果包括:
- 列:字段名称和数据类型
- 行:与查询匹配的数据记录
- 统计信息:行数、执行时间、资源利用率
- 可视化:图表渲染提示(时间图、条形图等)
KQL 最佳实践
🟢 性能优化:
- 尽早过滤:在联接和聚合之前使用
where - 限制结果大小:使用
take或limit减少数据传输 - 时间过滤:对于时间序列数据,始终按时间范围过滤
- 索引列:优先在索引列上进行过滤
🔵 查询模式:
- 使用
summarize进行聚合,而不是仅使用count() - 在时间序列中使用
bin()进行时间分桶 - 使用
project仅选择所需的列 - 使用
extend添加计算字段
🟡 常用函数:
ago(时间跨度):相对时间(ago(1h), ago(7d))between(开始 .. 结束):范围过滤startswith()、contains()、matches regex:字符串过滤parse、extract:从字符串中提取值percentiles()、avg()、sum()、max()、min():聚合
最佳实践
- 始终包含时间范围过滤器以优化查询性能
- 对于探索性查询,使用
take或limit以避免结果集过大 - 利用
summarize进行聚合,而不是在客户端处理 - 将常用查询作为函数存储在数据库中
- 对重复的聚合使用物化视图
- 监控查询性能和资源消耗
- 应用数据保留策略以管理存储成本
- 使用流式引入实现实时分析(< 1 秒延迟)
- 与 Azure Monitor 集成以获取操作洞察
使用的 MCP 工具
| 工具 | 用途 |
|---|---|
kusto_cluster_list |
列出订阅中的所有 Azure 数据资源管理器集群 |
kusto_database_list |
列出特定 Kusto 集群中的所有数据库 |
kusto_query |
针对 Kusto 数据库执行 KQL 查询 |
kusto_table_schema_get |
检索特定表的架构信息 |
必需参数:
subscription:Azure 订阅 ID 或显示名称cluster:Kusto 集群名称(例如 “mycluster”)database:数据库名称query:KQL 查询字符串(用于查询操作)table:表名(用于架构操作)
可选参数:
resource-group:资源组名称(用于列出操作)tenant:Azure AD 租户 ID
备用策略:Azure CLI 命令
如果 Azure MCP Kusto 工具失败、超时或不可用,请使用 Azure CLI 命令作为备用方案。
CLI 命令参考
| 操作 | Azure CLI 命令 |
|---|---|
| 列出集群 | az kusto cluster list --resource-group <资源组名> |
| 列出数据库 | az kusto database list --cluster-name <集群名> --resource-group <资源组名> |
| 显示集群 | az kusto cluster show --name <集群名> --resource-group <资源组名> |
| 显示数据库 | az kusto database show --cluster-name <集群名> --database-name <数据库名> --resource-group <资源组名> |
通过 Azure CLI 执行 KQL 查询
对于查询,请使用 Kusto REST API 或直接集群 URL:
az rest --method post \
--url "https://<集群名>.<区域>.kusto.windows.net/v1/rest/query" \
--body "{ \"db\": \"<数据库名>\", \"csl\": \"<kql查询>\" }"
何时使用备用方案
在以下情况下切换到 Azure CLI:
- MCP 工具返回超时错误(查询 > 60 秒)
- MCP 工具返回“服务不可用”或连接错误
- 使用 MCP 工具时身份验证失败
- 当已知数据库中有数据时,返回空响应
常见问题
- 访问被拒绝:验证数据库权限(查询至少需要“查看者”角色)
- 查询超时:使用时间过滤器优化查询、减少结果集或增加超时时间
- 语法错误:验证 KQL 语法 – 常见问题:缺少管道符、错误的运算符
- 结果为空:检查时间范围过滤器(可能限制过严),验证表名
- 集群未找到:检查集群名称格式(排除 “.kusto.windows.net” 后缀)
- CPU 使用率高:查询范围太广 – 添加过滤器、缩小时间范围、限制聚合
- 引入延迟:根据引入方法,流数据可能有 1-30 秒的延迟
用例
- 日志分析:应用程序日志、系统日志、审计日志
- 物联网分析:传感器数据、设备遥测、实时监控
- 安全分析:SIEM 数据、威胁检测、安全事件关联
- APM:应用性能指标、用户行为、错误跟踪
- 商业智能:点击流分析、用户分析、运营 KPI
📄 原始文档
完整文档(英文):
https://skills.sh/microsoft/azure-skills/azure-kusto
💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)