获取 Watcher 统计信息 API

编辑

获取 Watcher 统计信息 API编辑

检索当前 Watcher 指标。

请求编辑

GET _watcher/stats

GET _watcher/stats/<metric>

先决条件编辑

  • 您必须拥有 manage_watchermonitor_watcher 集群权限才能使用此 API。有关更多信息,请参阅安全权限

路径参数编辑

emit_stacktraces
(可选,布尔值)定义是否为每个正在运行的监测器生成堆栈跟踪。默认值为 false
<metric>

(可选,枚举)定义响应中包含哪些其他指标。

current_watches
在响应中包含当前正在执行的监测器。
queued_watches
在响应中包含已排队等待执行的监测器。
_all
在响应中包含所有指标。

响应正文编辑

此 API 始终返回基本指标。您可以使用 metric 参数检索更多指标。

current_watches

(列表)当前正在执行的监测器指标可以洞悉 Watcher 当前正在执行的监测器。对于当前正在执行的每个监测器,都会共享其他信息。这些信息包括 watch_id、其执行开始时间及其当前执行阶段。

To include this metric, the `metric` option should be set to `current_watches`
or `_all`. In addition you can also specify the `emit_stacktraces=true`
parameter, which adds stack traces for each watch that is being executed. These
stack traces can give you more insight into an execution of a watch.
queued_watches

(列表)Watcher 会调节监测器的执行,以使其执行不会对节点及其资源造成过大的压力。如果同时触发的监测器过多,并且没有足够的容量来执行所有监测器,则某些监测器将排队,等待当前正在执行的监测器完成其执行。已排队的监测器指标可以洞悉这些已排队的监测器。

To include this metric, the `metric` option should include `queued_watches` or
`_all`.

示例编辑

以下示例调用 stats API 来检索基本指标

response = client.watcher.stats
puts response
GET _watcher/stats

成功调用将返回类似于以下示例的 JSON 结构

{
   "watcher_state": "started",  
   "watch_count": 1, 
   "execution_thread_pool": {
      "size": 1000, 
      "max_size": 1 
   }
}

Watcher 的当前状态,可以是 startedstartingstopped

当前注册的监测器数量。

已触发并当前排队等待执行的监测器数量。

执行线程池的最大大小,表示并发执行的监测器的最大数量。

以下示例将 metric 选项指定为查询字符串参数,并将包含基本指标和有关当前正在执行的监测器的指标

response = client.watcher.stats(
  metric: 'current_watches'
)
puts response
GET _watcher/stats?metric=current_watches

以下示例将 metric 选项指定为 URL 路径的一部分

response = client.watcher.stats(
  metric: 'current_watches'
)
puts response
GET _watcher/stats/current_watches

以下代码段显示了一个成功的 JSON 响应示例,该响应捕获了正在执行的监测器

{
   "watcher_state": "started",
   "watch_count": 2,
   "execution_thread_pool": {
      "queue_size": 1000,
      "max_size": 20
   },
   "current_watches": [ 
      {
         "watch_id": "slow_condition", 
         "watch_record_id": "slow_condition_3-2015-05-13T07:42:32.179Z", 
         "triggered_time": "2015-05-12T11:53:51.800Z", 
         "execution_time": "2015-05-13T07:42:32.179Z", 
         "execution_phase": "condition" 
      }
   ]
}

Watcher 当前正在执行的所有监测器的列表。当当前没有监测器正在执行时,将返回一个空数组。捕获的监测器按执行时间降序排序。因此,运行时间最长的监测器始终位于顶部。

正在执行的监测器的 ID。

监测器记录的 ID。

触发器引擎触发监测器的时间。

执行监测器的时间。这是在执行输入之前的时刻。

当前监测器执行阶段。可以是 inputconditionactionsawaits_executionstartedwatch_transformabortedfinished

以下示例指定了 queued_watches 指标选项,并包含基本指标和已排队的监测器

response = client.watcher.stats(
  metric: 'queued_watches'
)
puts response
GET _watcher/stats/queued_watches

捕获正在执行的监测器的成功 JSON 响应示例

{
   "watcher_state": "started",
   "watch_count": 10,
   "execution_thread_pool": {
      "queue_size": 1000,
      "max_size": 20
   },
   "queued_watches": [ 
         {
            "watch_id": "slow_condition4", 
            "watch_record_id": "slow_condition4_223-2015-05-21T11:59:59.811Z", 
            "triggered_time": "2015-05-21T11:59:59.811Z", 
            "execution_time": "2015-05-21T11:59:59.811Z" 
         },
      ...
   ]
}

当前排队等待执行的所有监测器的列表。当没有监测器排队时,将返回一个空数组。

排队等待执行的监测器的 ID。

监测器记录的 ID。

触发器引擎触发监测器的时间。

监测器进入排队状态的时间。