后端与接口
在 Azure Data Explorer/Kusto…
适用于需要对 Azure Data Explorer/Kusto 中的日志、遥测、IoT、时序或安全数据执行 KQL 查询、聚合、关联和可视化的场景。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在 Azure Data Explore特定
解决思路
- 发现资源:列出订阅中可用的 Kusto 集群和数据库。
- 探索 schema:检索表结构以理解数据模型。
- 查询数据:执行 KQL 查询进行分析、过滤、聚合。
- 分析结果:处理查询输出以形成洞察和报表。
- Pattern 1 基础数据检索:执行 `Events | where Timestamp > ago(1h) | take 100` 获取最近记录,用于快速数据检查和近期事件检索。
- Pattern 2 聚合分析:执行 `Events | summarize count() by EventType, bin(Timestamp, 1h) | order by count_ desc` 按维度汇总,用于事件计数、分布分析和 Top-N 查询。
- Pattern 3 时间序列分析:执行 `Telemetry | where Timestamp > ago(24h) | summarize avg(ResponseTime), percentiles(ResponseTime, 50, 95, 99) by bin(Timestamp, 5m) | render timechart` 分析时间窗口趋势,用于性能监控、趋势分析和异常检测。
- Pattern 4 Join 与关联:执行 `Events | where EventType == "Error" | join kind=inner ( Logs | where Severity == "Critical" ) on CorrelationId | project Timestamp, EventType, LogMessage, Severity` 做跨数据集分析,用于根因分析和关联事件追踪。
- Pattern 5 Schema 发现:使用 `kusto_table_schema_get` 探索表结构,用于理解数据模型和查询规划。
- 执行查询时使用常见字段模式:`Timestamp` 是事件时间(datetime),用 `ago()`、`between()`、`bin()` 做时间过滤。
- 执行查询时使用 `EventType`/`Category` 作为分类字段进行分组。
- 执行查询时使用 `CorrelationId`/`SessionId` 追踪相关事件。
- 执行查询时使用 `Severity`/`Level` 按重要性过滤。
- 执行查询时使用 `Dimensions` 自定义属性进行分组和过滤。
- 处理结果格式:查询结果包含 Columns(字段名和类型)、Rows(匹配记录)、Statistics(行数、执行时间、资源使用)、Visualization(图表渲染提示,如 timechart、barchart)。
- KQL 性能优化:尽早过滤,在 join 和聚合之前使用 `where`。
- KQL 性能优化:限制结果大小,用 `take` 或 `limit` 减少数据传输。
- KQL 性能优化:时间序列数据始终按时间范围过滤。
- KQL 性能优化:优先过滤索引列。
- KQL 查询模式:用 `summarize` 做聚合,而不是单独使用 `count()`。
- KQL 查询模式:用 `bin()` 做时间分桶。
- KQL 查询模式:用 `project` 只选择需要的列。
- KQL 查询模式:用 `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 集群。
- 使用 MCP 工具 `kusto_database_list` 列出特定 Kusto 集群中的所有数据库。
- 使用 MCP 工具 `kusto_query` 对 Kusto 数据库执行 KQL 查询。
- 使用 MCP 工具 `kusto_table_schema_get` 获取特定表的 schema 信息。
- 调用 MCP 工具时传必需参数:`subscription`(Azure 订阅 ID 或显示名)、`cluster`(Kusto 集群名)、`database`(数据库名)、`query`(查询操作的 KQL 字符串)、`table`(schema 操作的表名)。
- 调用 MCP 工具时可传可选参数:`resource-group`(列表操作用)、`tenant`(Azure AD 租户 ID)。
- Fallback:如果 Azure MCP Kusto 工具失败、超时或不可用,使用 Azure CLI 命令作为后备。
- CLI 后备:列出集群用 `az kusto cluster list --resource-group <rg-name>`。
- CLI 后备:列出数据库用 `az kusto database list --cluster-name <cluster> --resource-group <rg-name>`。
- CLI 后备:显示集群用 `az kusto cluster show --name <cluster> --resource-group <rg-name>`。
- CLI 后备:显示数据库用 `az kusto database show --cluster-name <cluster> --database-name <db> --resource-group <rg-name>`。
- 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>\" }"`。
- 何时切换到 CLI 后备:MCP 工具返回超时错误(查询 > 60 秒)。
- 何时切换到 CLI 后备:MCP 工具返回 "service unavailable" 或连接错误。
- 何时切换到 CLI 后备:MCP 工具认证失败。
- 何时切换到 CLI 后备:已知数据库有数据但 MCP 返回空响应。
- 排障 Access Denied:验证数据库权限,查询至少需要 Viewer 角色。
- 排障 Query Timeout:用时间过滤优化查询、减少结果集或增加超时。
- 排障 Syntax Error:校验 KQL 语法,常见问题包括缺少管道、操作符错误。
- 排障 Empty Results:检查时间范围过滤(可能太严格),验证表名。
- 排障 Cluster Not Found:检查集群名格式,排除 `.kusto.windows.net` 后缀。
- 排障 High CPU Usage:查询过宽,添加过滤、缩短时间范围、限制聚合。
- 排障 Ingestion Lag:流式数据可能因摄取方式有 1-30 秒延迟。
适用边界 · 注意事项
- 没有 Azure 订阅、Azure Data Explorer/ADX 集群或 Kusto 数据库时不适用。
- 没有 Azure MCP Kusto 工具或 Azure CLI 且无法访问 Kusto REST API 时不适用。
- 查询非 Kusto/KQL 数据源(如 SQL、Elasticsearch、本地文件)时不适用。