跳转到主要内容
POST
/
monit
/
query
/
diagnose
数据源诊断
curl --request POST \
  --url 'https://api.flashcat.cloud/monit/query/diagnose?app_key=' \
  --header 'Content-Type: application/json' \
  --data @- <<EOF
{
  "account_id": 10001,
  "ds_type": "victorialogs",
  "ds_name": "vmlogs-read",
  "operation": "log_patterns",
  "time_range": {
    "start": 1776847544,
    "end": 1776849344
  },
  "methods": [
    {
      "name": "pattern_snapshot"
    },
    {
      "name": "pattern_compare",
      "baseline": "same_window_yesterday"
    }
  ],
  "input": {
    "query": "_stream:{status='500'}"
  },
  "options": {
    "max_logs_scanned": 10000,
    "max_patterns": 20,
    "examples_per_pattern": 2,
    "timeout_seconds": 25
  }
}
EOF
{
  "request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
  "data": {
    "operation": "log_patterns",
    "ds_type": "victorialogs",
    "ds_name": "vmlogs-read",
    "query": "_stream:{status='500'}",
    "window": {
      "start": 1776847544,
      "end": 1776849344
    },
    "results": [
      {
        "method": "pattern_snapshot",
        "window": {
          "start": 1776847544,
          "end": 1776849344
        },
        "summary": {
          "logs_scanned": 405,
          "baseline_logs_scanned": 0,
          "current_truncated": false,
          "baseline_truncated": false,
          "patterns_total": 2,
          "returned_patterns": 2,
          "new_patterns": 0,
          "surging_patterns": 0,
          "surging_threshold": {
            "change_ratio_min": 3,
            "count_min": 5
          }
        },
        "patterns": [
          {
            "pattern_hash": "239fa5da",
            "template": "POST /api/v<number>/orders/<number> HTTP/<number>",
            "count": 213,
            "first_seen": 1776847562,
            "last_seen": 1776849336,
            "severity": "unknown",
            "approximate": false,
            "sources": [
              {
                "field": "pod",
                "value": "order-api-7f69d8d9b6-m4x9n",
                "count": 130
              }
            ],
            "examples": [
              "POST /api/v<number>/orders/<number> HTTP/<number>"
            ]
          }
        ],
        "warnings": [
          "examples redacted"
        ]
      }
    ]
  }
}

调用限制

速率限制600 次/分钟;10 次/秒 每账户
权限任意有效的 app_key(只读;不受特定权限分类约束)

使用说明

  • 这是诊断 / RCA 接口,而非原始数据查询接口——如需查看明细行,请配合 /monit/query/rows 使用。
  • operationds_type 推导:loki / victorialogslog_patterns,prometheusmetric_trends。其他数据源必须显式传入 operation
  • methods 选择要执行的分析方法;省略时,log_patterns 默认为 pattern_snapshot + pattern_compare(previous_window),metric_trends 默认为 single_window_shape + window_compare(previous_window)
  • time_range 单位为 Unix 秒;缺失或无效时默认最近 15 分钟;窗口宽度超过 6 小时将被拒绝。
  • 请求通过 WebSocket 转发至 monit-edge。长耗时:边缘侧执行可能耗时约 30 秒,叠加 webapi 开销。客户端超时应至少设置为 35 秒
  • options.* 由边缘侧设置上限(max_logs_scanned ≤ 50 000,max_patterns ≤ 50,examples_per_pattern ≤ 3,step_seconds ∈ [15, 300],max_series ≤ 200,topk ≤ 50,timeout_seconds ≤ 30)。
  • /monit/query/rows 一样存在两层错误:边缘侧执行错误以 HTTP 200 返回,响应体中带 error 对象——务必同时检查两层。
  • 日志样例在返回前会经过基础脱敏处理,响应中会带 warnings: ["examples redacted"]。不可作为原始日志使用。

授权

app_key
string
query
必填

在 Flashduty 控制台 账户 → APP Key 中签发的 app_key。调用任何公开 API 时都必须携带。它等同于所属账户的身份凭证,请妥善保管。

请求体

application/json
ds_type
string
必填

数据源类型。log_patterns 支持 lokivictorialogs;metric_trends 支持 prometheus

ds_name
string
必填

租户下已配置的数据源名称。

input
object
必填
account_id
integer<int64>

可选的一致性校验。若提供,必须等于已认证账户。

operation
enum<string>

诊断操作类型。省略时根据 ds_type 推断(loki / victorialogs → log_patterns,prometheus → metric_trends)。其他数据源必须显式指定。

可用选项:
log_patterns,
metric_trends
time_range
object

诊断窗口,Unix 秒。缺失或无效时默认最近 15 分钟;窗口宽度超过 6 小时将被拒绝。

methods
object[]

要执行的诊断方法。省略时,log_patterns 默认为 pattern_snapshot + pattern_compare(previous_window),metric_trends 默认为 single_window_shape + window_compare(previous_window)

options
object

执行选项,所有值均受 monit-edge 上限约束。

响应

成功

成功响应结构。2xx 响应中 request_id 标识本次调用(同时出现在 Flashcat-Request-Id 响应头中),data 为接口业务 payload。失败响应使用不同结构,参见 ErrorResponse

request_id
string
必填

本次请求的唯一 ID,也会在 Flashcat-Request-Id 响应头中返回。反馈问题时请一并附上。

示例:

"01HK8XQE3Z7JM2NTFQ5YJ8P9R4"

data
object
必填

按 operation 区分的诊断结果。请先检查 operation,再处理 results[]results[].patterns(对应 log_patterns)与 results[].series(对应 metric_trends)的结构因 operation 不同而不同;完整 schema 见 monit-webapi diagnose-api 文档。