azure-kusto

azure-kusto

热门

使用KQL查询和分析Azure Data Explorer(Kusto/ADX)中的数据,适用于日志分析、遥测和时间序列分析。适用场景:KQL查询、Kusto数据库查询、Azure Data Explorer、ADX集群、日志分析、时间序列数据、IoT遥测、异常检测。

1196Star
196Fork
更新于 2026/6/9
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查询
  • 架构探索:发现表、列和数据类型
  • 资源管理:列出集群和数据库
  • 分析:聚合、时间序列、异常检测、机器学习

核心工作流程

  1. 发现资源:列出订阅中可用的集群和数据库
  2. 探索架构:检索表结构以了解数据模型
  3. 查询数据:执行KQL查询进行分析、过滤、聚合
  4. 分析结果:处理查询输出以获取洞察和报告

查询模式

模式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
  • 限制结果大小:使用 takelimit 减少数据传输
  • 时间过滤:对于时间序列数据,始终按时间范围过滤
  • 索引列:优先过滤索引列

🔵 查询模式:

  • 使用 summarize 进行聚合,而不是单独使用 count()
  • 在时间序列中使用 bin() 进行时间分桶
  • 使用 project 只选择需要的列
  • 使用 extend 添加计算字段

🟡 常用函数:

  • ago(timespan):相对时间(ago(1h)、ago(7d))
  • between(start .. end):范围过滤
  • startswith()contains()matches regex:字符串过滤
  • parseextract:从字符串中提取值
  • percentiles()avg()sum()max()min():聚合

最佳实践

  • 始终包含时间范围过滤器以优化查询性能
  • 对于探索性查询,使用 takelimit 避免返回大量结果集
  • 利用 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