carbonapi icon indicating copy to clipboard operation
carbonapi copied to clipboard

[BUG] movingWindow not working with time

Open ljurk opened this issue 1 year ago • 8 comments

Describe the bug The movingWindow function is not returning data if i use time as an argument(e.g. 1sec, 1min, 1hour). If I use the count, its working.

CarbonAPI Version 1.1.0

Logs curl request:

2024-08-20T10:56:26.025+0200    INFO    access  request served  {"data": {"handler":"render","carbonapi_uuid":"c0217509-9b88-45e6-a06a-050300646dfd","url":"/render/?target=movingWindow(collectd.ceph.server.ceph_smb1.cpu.percent-idle%2c'10sec')&format=json&from=-1min","peer_ip":"10.89.0.22","peer_port":"43426","host":"nounderscore","format":"json","use_cache":true,"targets":["movingWindow(collectd.ceph.server.ceph_smb1.cpu.percent-idle,'10sec')"],"cache_timeout":60,"metrics":["movingWindow(collectd.ceph.server.ceph_smb1.cpu.percent-idle,'10sec')"],"runtime":0.00189348,"http_code":200,"carbonapi_response_size_bytes":2,"from":1724144126,"until":1724144186,"from_raw":"-1min","uri":"/render/?target=movingWindow(collectd.ceph.server.ceph_smb1.cpu.percent-idle%2c'10sec')&format=json&from=-1min","from_cache":false,"used_backend_cache":false,"request_headers":{}}}

grafana request

2024-08-20T10:56:56.022+0200    INFO    access  request served  {"data": {"handler":"render","carbonapi_uuid":"6ef82394-16bd-40b9-9e1d-8086147319ae","url":"/render","peer_ip":"X.X.X.X","host":"nounderscore","format":"json","use_cache":true,"targets":["movingWindow(collectd.ceph.server.ceph_smb1.cpu.percent-idle, '10min', 'diff')"],"cache_timeout":60,"metrics":["movingWindow(collectd.ceph.server.ceph_smb1.cpu.percent-idle, '10min', 'diff')"],"runtime":0.001968332,"http_code":200,"carbonapi_response_size_bytes":2,"from":1724140614,"until":1724144216,"max_data_points":2089,"from_raw":"1724140614","until_raw":"1724144216","uri":"/render","from_cache":false,"used_backend_cache":false,"request_headers":{}}}

CarbonAPI Configuration:

listen: 0.0.0.0:8081
notFoundStatusCode: 200
cache:
    type: mem
    size_mb: 0
    defaultTimeoutSec: 60
cpus: 0
tz: ''
graphite:
    host: go-carbon:2003
    interval: 60s
    prefix: carbon.api
    pattern: '{prefix}.{fqdn}'
idleConnections: 10
pidFile: ''
upstreams:
    buckets: 10
    timeouts:
        find: 2s
        render: 10s
        connect: 200ms
    concurrencyLimitPerServer: 0
    keepAliveInterval: 30s
    maxIdleConnsPerHost: 100
    backends:
    - http://go-carbon:8080
expireDelaySec: 10
logger:
-   logger: ''
    file: stdout
    level: info
    encoding: console
    encodingTime: iso8601
    encodingDuration: seconds

Simplified query (if applicable) movingWindow(collectd.ceph.server.ceph_smb1.cpu.percent-idle,'10sec')

Backend response (if possible)

response for time movingWindow(collectd.ceph.server.ceph_smb1.cpu.percent-idle, '10sec')

[]

response for count movingWindow(collectd.ceph.server.ceph_smb1.cpu.percent-idle, 10)

[
 {
   "target": "movingWindow(collectd.ceph.server.ceph_smb1.cpu.percent-idle,10)",
   "datapoints": [
     [
       97.87375164398898,
       1724144790
     ],
     [
       97.87857601723441,
       1724144800
     ],
     [
       97.43791033280638,
       1724144810
     ],
     [
       96.22933981442736,
       1724144820
     ],
     [
       96.54572571912942,
       1724144830
     ],
     [
       97.02278330858039,
       1724144840
     ]
   ],
   "tags": {
     "movingWindow": "10",
     "name": "collectd.ceph.server.ceph_smb1.cpu.percent-idle"
   }
 }
]

other moving* functions seem to function with time, but not movingWindow. I've also saw and ran the tests for the movingWindow-function, the tests are working. I've no idea why

ljurk avatar Aug 20 '24 09:08 ljurk

Hi @ljurk Did you tried e.g. '100s' with data above? Digits means 'number of points', so, 10 means 10 points, so, with 10 sec resolution it should be equivalent of '100s'. '10sec' exactly match resolution, not sure it movingWindow will work in this case.

deniszh avatar Aug 20 '24 09:08 deniszh

I tried it, but the result was the same, an empty array. By accident i tried 0s and got a response, even though it doesnt contain datapoints:

[
  {
    "target": "movingWindow(collectd.ceph.server.ceph_smb1.cpu.percent-idle,'0s')",
    "datapoints": [
      [
        null,
        1724151190
      ],
      [
        null,
        1724151200
      ],
      [
        null,
        1724151210
      ],
      [
        null,
        1724151220
      ],
      [
        null,
        1724151230
      ],
      [
        null,
        1724151240
      ]
    ],
    "tags": {
      "movingWindow": "'0s'",
      "name": "collectd.ceph.server.ceph_smb1.cpu.percent-idle"
    }
  }
]

ljurk avatar Aug 20 '24 10:08 ljurk

CarbonAPI Version 1.1.0

Latest version that was tagged is 0.16.1. So I have hard time pinpointing the correct one. ALso that was almost a year ago, so I would encourage to try latest master anyway.

Civil avatar Aug 20 '24 10:08 Civil

sorry, this returened by /version. Im using the latest master

ljurk avatar Aug 20 '24 10:08 ljurk

sorry, this was returned by /version

That endpoint returns what Grafana would parses for graphite endpoint, and not carbonapi version.

Can you share the raw request (same request, without movingWindow)?

Civil avatar Aug 20 '24 11:08 Civil

curl "localhost/render/?target=collectd.ceph.server.ceph_smb1.cpu.percent-idle&format=json&from=-1min"

[
  {
    "target": "collectd.ceph.server.ceph_smb1.cpu.percent-idle",
    "datapoints": [
      [
        99.2985971943888,
        1724151640
      ],
      [
        99.6498249124562,
        1724151650
      ],
      [
        98.8476953907816,
        1724151660
      ],
      [
        99.1995997999,
        1724151670
      ],
      [
        99.8997995991984,
        1724151680
      ],
      [
        98.1509245377311,
        1724151690
      ]
    ],
    "tags": {
      "name": "collectd.ceph.server.ceph_smb1.cpu.percent-idle"
    }
  }
]

ljurk avatar Aug 20 '24 11:08 ljurk

I forgot to mention, that we have 2 replicated instances: 1 go-carbon/carbonapi and 1 carbon/graphite. Both instances have the same data, the movingWindow-query works in the carbon/graphite instance.

ljurk avatar Aug 21 '24 05:08 ljurk

I think it's because "movingWindow" is not included in this list

shanson7 avatar Aug 30 '24 08:08 shanson7