housepower / ckman

This is a tool which used to manage and monitor ClickHouse database
Apache License 2.0
438 stars 108 forks source link

ckman sql error #187

Closed yuzhichang closed 2 years ago

yuzhichang commented 2 years ago

下面的SQL在ckman上执行报错,在clickhouse-client上正常。

SELECT
  AVG(`T6`.`value`) AS `avg`,
  `T6`.`metric`,
  `T6`.`host`,
  `toStartOfInterval`(`T6`.`timestamp`, INTERVAL 5 MINUTE) AS `timestamp`,
  (
    (
      argMax(`T6`.`value`, `T6`.`timestamp`) - argMin(`T6`.`value`, `T6`.`timestamp`)
    ) / (
      max(toDateTime(`T6`.`timestamp`)) - min(toDateTime(`T6`.`timestamp`))
    )
  ) AS rate
FROM
  (
    SELECT
      `T3`.*,
      `T5`.*
    FROM
      (
        SELECT
          `T0`.*
        FROM
          `cmpV1`.`dist_metric` AS `T0`
        WHERE
          `T0`.`__series_id` global IN (
            (
              SELECT
                `T1`.`__series_id`
              FROM
                `cmpV1`.`dist_metric_series` AS `T1`
              WHERE
                `match`(`T1`.`host`, '^eoiup.*')
                AND `T1`.`metric` IN ('cpu_load1')
            ) AS `T2`
          )
          AND (
            `T0`.`timestamp` >= '2021-12-27 17:05:19'
            AND `T0`.`timestamp` < '2021-12-27 17:06:19'
          )
      ) AS `T3` global
      INNER JOIN (
        SELECT
          `T4`.`host`,
          `T4`.`metric`,
          `T4`.`__series_id`,
          `T4`.`labels`
        FROM
          `cmpV1`.`dist_metric_series` AS `T4`
        WHERE
          `match`(`T4`.`host`, '^eoiup.*')
          AND `T4`.`metric` IN ('cpu_load1')
      ) AS `T5` ON `T3`.`__series_id` = `T5`.`__series_id`
  ) AS `T6`
GROUP BY
  `T6`.`metric`,
  `T6`.`host`,
  `timestamp`
LIMIT
  10000

┌──────────────────avg─┬─metric────┬─host────┬───────────timestamp─┬─────rate─┐                                                         │·········
│ 0.013333333333333329 │ cpu_load1 │ eoiup05 │ 2021-12-27 17:05:00 │ -0.00025 │                                                         │·········
│                    0 │ cpu_load1 │ eoiup02 │ 2021-12-27 17:05:00 │        0 │                                                         │·········
│                 0.02 │ cpu_load1 │ eoiup06 │ 2021-12-27 17:05:00 │      nan │                                                         │·········
└──────────────────────┴───────────┴─────────┴─────────────────────┴──────────┘                                                         │·········

ckman错误日志:

2021-12-28T15:11:31.666+0800    ERROR   model/response.go:46    GET /api/v1/ck/query/ck-cluster?clusterName=ck-cluster&query=SELECT%0A++AVG(%60T6%
60.%60value%60)+AS+%60avg%60,%0A++%60T6%60.%60metric%60,%0A++%60T6%60.%60host%60,%0A++%60toStartOfInterval%60(%60T6%60.%60timestamp%60,+INTERVAL+5
+MINUTE)+AS+%60timestamp%60,%0A++(%0A++++(%0A++++++argMax(%60T6%60.%60value%60,+%60T6%60.%60timestamp%60)+-+argMin(%60T6%60.%60value%60,+%60T6%60.
%60timestamp%60)%0A++++)+%2F+(%0A++++++max(toDateTime(%60T6%60.%60timestamp%60))+-+min(toDateTime(%60T6%60.%60timestamp%60))%0A++++)%0A++)+AS+rate
%0AFROM%0A++(%0A++++SELECT%0A++++++%60T3%60.*,%0A++++++%60T5%60.*%0A++++FROM%0A++++++(%0A++++++++SELECT%0A++++++++++%60T0%60.*%0A++++++++FROM%0A++
++++++++%60cmpV1%60.%60dist_metric%60+AS+%60T0%60%0A++++++++WHERE%0A++++++++++%60T0%60.%60__series_id%60+global+IN+(%0A++++++++++++(%0A+++++++++++
+++SELECT%0A++++++++++++++++%60T1%60.%60__series_id%60%0A++++++++++++++FROM%0A++++++++++++++++%60cmpV1%60.%60dist_metric_series%60+AS+%60T1%60%0A+
+++++++++++++WHERE%0A++++++++++++++++%60match%60(%60T1%60.%60host%60,+%27%5Eeoiup.*%27)%0A++++++++++++++++AND+%60T1%60.%60metric%60+IN+(%27cpu_loa
d1%27)%0A++++++++++++)+AS+%60T2%60%0A++++++++++)%0A++++++++++AND+(%0A++++++++++++%60T0%60.%60timestamp%60+%3E%3D+%272021-12-27+17:05:19%27%0A+++++
+++++++AND+%60T0%60.%60timestamp%60+%3C+%272021-12-27+17:06:19%27%0A++++++++++)%0A++++++)+AS+%60T3%60+global%0A++++++INNER+JOIN+(%0A++++++++SELECT
%0A++++++++++%60T4%60.%60host%60,%0A++++++++++%60T4%60.%60metric%60,%0A++++++++++%60T4%60.%60__series_id%60,%0A++++++++++%60T4%60.%60labels%60%0A+
+++++++FROM%0A++++++++++%60cmpV1%60.%60dist_metric_series%60+AS+%60T4%60%0A++++++++WHERE%0A++++++++++%60match%60(%60T4%60.%60host%60,+%27%5Eeoiup.
*%27)%0A++++++++++AND+%60T4%60.%60metric%60+IN+(%27cpu_load1%27)%0A++++++)+AS+%60T5%60+ON+%60T3%60.%60__series_id%60+%3D+%60T5%60.%60__series_id%6
0%0A++)+AS+%60T6%60%0AGROUP+BY%0A++%60T6%60.%60metric%60,%0A++%60T6%60.%60host%60,%0A++%60timestamp%60%0ALIMIT%0A++10000 marshal response body fai
l: model.ResponseBody.Entity: [][]interface {}: []interface {}: unsupported value: NaN
github.com/housepower/ckman/model.WrapMsg
        /root/zhichyu/ckman/model/response.go:46
github.com/housepower/ckman/controller.(*ClickHouseController).QueryInfo
        /root/zhichyu/ckman/controller/clickhouse.go:633
github.com/gin-gonic/gin.(*Context).Next
        /root/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/context.go:165
github.com/housepower/ckman/server.ginRefreshTokenExpires.func1
        /root/zhichyu/ckman/server/server.go:242
github.com/gin-gonic/gin.(*Context).Next
        /root/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/context.go:165
github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1
        /root/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/recovery.go:99
github.com/gin-gonic/gin.(*Context).Next
        /root/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/context.go:165
github.com/housepower/ckman/server.ginLoggerToFile.func1
        /root/zhichyu/ckman/server/server.go:147
github.com/gin-gonic/gin.(*Context).Next
        /root/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/context.go:165
github.com/gin-gonic/gin.(*Engine).handleHTTPRequest
        /root/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/gin.go:489
github.com/gin-gonic/gin.(*Engine).ServeHTTP
        /root/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/gin.go:445
net/http.serverHandler.ServeHTTP
        /usr/local/go/src/net/http/server.go:2878
net/http.(*conn).serve
        /usr/local/go/src/net/http/server.go:1929
YenchangChan commented 2 years ago

JSON无法处理Inf和NaN导致,已解决 83a41a66