SKILL.md
readonly只读
name
azure-kusto
description
使用KQL查询和分析Azure Data Explorer(Kusto/ADX)中的数据,适用于日志分析、遥测和时间序列分析。适用场景:KQL查询、Kusto数据库查询、Azure Data Explorer、ADX集群、日志分析、时间序列数据、IoT遥测、异常检测。
Azure Data Explorer (Kusto) 查询与分析
执行KQL查询并管理Azure Data Explorer资源,实现对日志、遥测和时间序列数据的快速、可扩展的大数据分析。
技能激活触发条件
当用户提出以下请求时,立即使用此技能:
- "查询我的Kusto数据库中的[数据模式]"
- "显示Azure Data Explorer中过去一小时的事件"
- "分析我的ADX集群中的日志"
- "在[数据库]上运行KQL查询"
- "我的Kusto数据库中有哪些表?"
- "显示[表]的架构"
- "列出我的Azure Data Explorer集群"
- "按[维度]聚合遥测数据"
- "根据我的日志创建时间序列图表"
关键指示词:
- 提及"Kusto"、"Azure Data Explorer"、"ADX"或"KQL"
- 日志分析或遥测分析请求
- 时间序列数据探索
- IoT数据分析查询
- SIEM或安全分析任务
- 大数据集上的数据聚合请求
- 性能监控或APM查询
概述
此技能支持查询和管理Azure Data Explorer (Kusto),这是一个针对日志和遥测数据优化的快速、高度可扩展的数据探索服务。Azure Data Explorer使用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:用于分组和过滤的自定义属性
结果格式
查询结果包括:
- Columns:字段名称和数据类型
- Rows:匹配查询的数据记录
- Statistics:行数、执行时间、资源利用率
- Visualization:图表渲染提示(timechart、barchart等)
KQL最佳实践
🟢 性能优化:
- 尽早过滤:在连接和聚合之前使用
where - 限制结果大小:使用
take或limit减少数据传输 - 时间过滤:对于时间序列数据,始终按时间范围过滤
- 索引列:优先过滤索引列
🔵 查询模式:
- 使用
summarize进行聚合,而不是单独使用count() - 在时间序列中使用
bin()进行时间分桶 - 使用
project只选择需要的列 - 使用
extend添加计算字段
🟡 常用函数:
ago(timespan):相对时间(ago(1h)、ago(7d))between(start .. end):范围过滤startswith()、contains()、matches regex:字符串过滤parse、extract:从字符串中提取值percentiles()、avg()、sum()、max()、min():聚合
最佳实践
- 始终包含时间范围过滤器以优化查询性能
- 对于探索性查询,使用
take或limit避免返回大量结果集 - 利用
summarize进行聚合,而不是在客户端处理 - 将常用查询作为函数存储在数据库中
- 对重复聚合使用物化视图
- 监控查询性能和资源消耗
- 应用数据保留策略以管理存储成本
- 使用流式引入实现实时分析(<1秒延迟)
- 与Azure Monitor集成以获取运营洞察
使用的MCP工具
| 工具 | 用途 |
|---|---|
kusto_cluster_list |
列出订阅中的所有Azure Data Explorer集群 |
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 <rg-name> |
| 列出数据库 | az kusto database list --cluster-name <cluster> --resource-group <rg-name> |
| 显示集群 | az kusto cluster show --name <cluster> --resource-group <rg-name> |
| 显示数据库 | az kusto database show --cluster-name <cluster> --database-name <db> --resource-group <rg-name> |
通过Azure CLI执行KQL查询
对于查询,使用Kusto REST API或直接集群URL:
az rest --method post \
--url "https://<cluster>.<region>.kusto.windows.net/v1/rest/query" \
--body "{ \"db\": \"<database>\", \"csl\": \"<kql-query>\" }"
何时回退
在以下情况下切换到Azure CLI:
- MCP工具返回超时错误(查询超过60秒)
- MCP工具返回"服务不可用"或连接错误
- MCP工具身份验证失败
- 已知数据库有数据但返回空结果
常见问题
- 访问被拒绝:验证数据库权限(查询至少需要查看者角色)
- 查询超时:使用时间过滤器优化查询,减少结果集,或增加超时时间
- 语法错误:验证KQL语法——常见问题:缺少管道符、运算符错误
- 空结果:检查时间范围过滤器(可能过于严格),验证表名
- 集群未找到:检查集群名称格式(排除".kusto.windows.net"后缀)
- CPU使用率高:查询范围太广——添加过滤器,减少时间范围,限制聚合
- 引入延迟:根据引入方法,流式数据可能有1-30秒延迟
使用场景
- 日志分析:应用程序日志、系统日志、审计日志
- IoT分析:传感器数据、设备遥测、实时监控
- 安全分析:SIEM数据、威胁检测、安全事件关联
- APM:应用程序性能指标、用户行为、错误追踪
- 商业智能:点击流分析、用户分析、运营KPI






