Grafana 在 Elasticsearch 数据源中使用两个字段的减法

Grafana to use substraction of two fields in Elasticsearch data source

  1. 我有两个字段,分别是 'status_codes' 和 requests
  2. 我想获取失败请求的数量。
  3. 我的等式是[请求数 - 成功请求数]
  4. 在脚本中我写了这样的东西 _value - doc['@status_codes.200'].value

但图表中的值 return 是 'N/A'

我正在使用 elasticsearch(7.6.0) 和 Grafana(6.6.2)。

以下是我发送到 elasticsearch 的输出文件

{   "latencies":{
      "total":3981710268690,
      "mean":43876078,
      "50th":916913,
      "90th":2217744,
      "95th":5162430,
      "99th":60233348,
      "max":60000209373,
      "min":43652

},
   "@version":"1",
   "latest":"2020-03-05T16:14:44.23387091Z",
   "path":"test23.json",
   "duration":61163899322,
   "wait":552109,
   "status_codes":{
      "0":90624,
      "200":125

},
   "earliest":"2020-03-05T16:13:43.069971588Z",
   "rate":1483.702004057131,
   "throughput":2.0436707446156577,
   "@timestamp":"2020-03-05T16:14:44.453Z",
   "errors":[
      "Post http://www: dial tcp 0.0.0.0:0->10.133.9.87:8688: socket: too many open files",
      "Post http://www: dial tcp: lookup internal-netty-load-balancer-937469711.us-east-1.elb.amazonaws.com on 10.20.30.30: dial udp 10.20.30:45: socket: too many open files"

],
   "bytes_in":{
      "mean":70.90298515686123,
      "total":6434375

},
   "requests":90749,
   "Report_Title":"test23",
   "host":"ABS",
   "success":0.0013774256465635985,
   "end":"2020-03-05T16:14:44.234423019Z",
   "bytes_out":{
      "mean":70.90298515686123,
      "total":6434375

}
}

我也使用了@yash提到的Singlestat插件,但我仍然可以解决这个问题。 Query section

Visualization section

谁能帮帮我

这是一项相当容易的任务。您只需要为此使用 'Singlestat Math' 或 'Metaqueries' 插件。您需要做的是,在同一面板的两个查询中使用计数指标,一个用于获取成功状态代码的计数,另一个用于获取不成功状态代码的计数。然后你可以使用任何一个插件从另一个查询中减去查询结果的值。

https://grafana.com/grafana/plugins/blackmirror1-singlestat-math-panel https://grafana.com/grafana/plugins/goshposh-metaqueries-datasource

我建议你使用 singlestat 数学插件,根据我的经验,它会更容易使用。 注意:计算 (A-B) 是在可视化部分完成的,而不是在查询部分,在 singlestat 数学插件中。

P.S。 singlestat-math 插件实际上在可视化部分添加了一个新面板。它与默认的 singlestat 面板不同。

最后我找到了如下解决方案,

solution

谢谢大家