Grafana DashBoard : ClickHouse

 

 

监控类工具/视图 :Zabbix  promtheus  Grafana   Loki 等

对于ClickHouse 监控 ,原理上大同小异 :

监控工具 prom 定时监控一些系统参数, 展示到Grafana 可视化界面。 

而Grafana 与 Zabbix 自身也可修改Source源,通过SQL监控一些数据库参数。

本文介绍: Grafana 的使用 ,以ClickHouse Source 为例

官网:https://grafana.com

安装就先不介绍了,博客都有。

备注:使用Grafana 监控 ClickHouse,需将ClickHouse 的 config 中 log queries 打开。即log 中相关查询记录会自动存储在该库,可在system 库中查到,也可供监控使用。 

介绍一些自定义 DashBoard .  即 监控看板的开发。

官网提供DashBoard Hub  ,可下载一些 成熟的看板使用 。https://grafana.com/grafana/dashboards

Data Source 修改为 ClickHouse  可看到很多已有的看板 ,举例打开 Title 为 ClickHouse Queries 这个

可以看到 2512 为该 DashBoard 的 ID ,可以 Grafana 创建Source 源时时,直接调用ID,使用它。

我们 Download JSON  看一下它的 构成

 

从下往上看,简单些。分别对应:

以下为官网相关信息说明:

description : 描述 备注

version :v2

title:标题、Dashboard 名

 

以下为看板配置:

timezone:浏览器时区

timepicker: refresh_intervals:刷新间隔           time_options  :对应value

time:图表默认时间范围

templating:

 

以下为Grafana 中基础配置:

__requires:对应Granfana 版本配置 (4.3.2)、应用配置(graph,table,text , datasource)

__inputs:供系统读入的相关配置说明 ,JDBC等。

annotations:备注

editable:可编辑 

gnetId:网络看板ID

links:相关信息同步

refresh:刷新频率

rows:看板设计的配置,包含大小,描边,数据源等等。 重点看 targets:

       

              "database": "system",                             
              "dateColDataType": "event_date",                         
              "dateLoading": false,                                               
              "dateTimeColDataType": "event_time",                   
              "datetimeLoading": false,
              "expr": "",
              "formattedQuery": "

<font color=\"darkcyan\">$rateColumns</font>(<br />    

<font color=\"navajowhite\">substring</font>(query, 

 <font color=\"cornflowerblue\">1</font>,  

<font color=\"cornflowerblue\">45</font>)

<font color=\"darkorange\">AS</font> query,<br />    

<font color=\"navajowhite\">count</font>() c)<br />

<font color=\"darkorange\">FROM</font>

<font color=\"darkcyan\">$table</font><br />

<font color=\"darkorange\">WHERE</font><br />   

<font color=\"navajowhite\">cityHash64</font>(query)

<font color=\"darkorange\">global</font>

<font color=\"darkorange\">in</font> (<br />    

<font color=\"darkorange\">SELECT</font> <font color=\"navajowhite\">cityHash64</font>(<font color=\"navajowhite\">substring</font>(query,  <font color=\"cornflowerblue\">1</font>,  <font color=\"cornflowerblue\">45</font>)) <font color=\"darkorange\">AS</font> h<br />    

<font color=\"darkorange\">FROM</font> <font color=\"darkcyan\">$table</font><br />    

<font color=\"darkorange\">WHERE</font><br />        

<font color=\"darkcyan\">$timeFilter</font><br />        

<font color=\"yellow\">AND</font> <font color=\"darkorange\">type</font> <font color=\"darkorange\">in</font> (<font color=\"darkcyan\">$type</font>)<br />        

<font color=\"yellow\">AND</font> initial_user <font color=\"darkorange\">in</font> (<font color=\"darkcyan\">$user</font>)<br />        

<font color=\"yellow\">AND</font>(<font color=\"lightgreen\">'$query_type'</font> <font color=\"yellow\">=</font> <font color=\"lightgreen\">'all'</font> <font color=\"yellow\">or</font>(positionCaseInsensitive(query,  <font color=\"lightgreen\">'$query_type'</font>) <font color=\"yellow\">=</font> <font color=\"cornflowerblue\">1</font>))<br />    

<font color=\"darkorange\">GROUP BY</font> h<br />    

<font color=\"darkorange\">ORDER BY</font> <font color=\"navajowhite\">count</font>() <font color=\"darkorange\">desc</font><br />    

<font color=\"darkorange\">LIMIT</font> <font color=\"darkcyan\">$top</font>)<br />    

<font color=\"yellow\">AND</font> <font color=\"darkorange\">type</font> <font color=\"darkorange\">in</font> (<font color=\"darkcyan\">$type</font>)<br />    

<font color=\"yellow\">AND</font> initial_user <font color=\"darkorange\">in</font> (<font color=\"darkcyan\">$user</font>)<br />    

<font color=\"yellow\">AND</font>(<font color=\"lightgreen\">'$query_type'</font> <font color=\"yellow\">=</font> <font color=\"lightgreen\">'all'</font> <font color=\"yellow\">or</font>(positionCaseInsensitive(query,  <font color=\"lightgreen\">'$query_type'</font>) <font color=\"yellow\">=</font> <font color=\"cornflowerblue\">1</font>))",
              "intervalFactor": 2,
              "query": "$rateColumns(\n    substring(query,  1,  45) AS query,\n    count() c)\nFROM $table\nWHERE\n    cityHash64(query) global in (\n    SELECT cityHash64(substring(query,  1,  45)) AS h\n    FROM $table\n    WHERE\n        $timeFilter\n        AND type in ($type)\n        AND initial_user in ($user)\n        AND('$query_type' = 'all' or(positionCaseInsensitive(query,  '$query_type') = 1))\n    GROUP BY h\n    ORDER BY count() desc\n    LIMIT $top)\n    AND type in ($type)\n    AND initial_user in ($user)\n    AND('$query_type' = 'all' or(positionCaseInsensitive(query,  '$query_type') = 1))",
              "rawQuery": "SELECT t, arrayMap(a -> (a.1, a.2/runningDifference( t/1000 )), groupArr) FROM (SELECT t, groupArray((query, c)) as groupArr FROM ( SELECT (intDiv(toUInt32(event_time), 2) * 2) * 1000 as t, substring(query,  1,  45) AS query, count() c FROM system.query_log WHERE event_date >= toDate(1498209947) AND event_time >= toDateTime(1498209947) AND      cityHash64(query) global in (     SELECT cityHash64(substring(query,  1,  45)) AS h     FROM system.query_log     WHERE         event_date >= toDate(1498209947) AND event_time >= toDateTime(1498209947)         AND type in (1,2,3,4)         AND initial_user in ('default')         AND('all' = 'all' or(positionCaseInsensitive(query,  'all') = 1))     GROUP BY h     ORDER BY count() desc     LIMIT 5)     AND type in (1,2,3,4)     AND initial_user in ('default')     AND('all' = 'all' or(positionCaseInsensitive(query,  'all') = 1)) GROUP BY t, query  ORDER BY t) GROUP BY t ORDER BY t)",
              "refId": "A",
              "resultFormat": "time_series",
              "table": "query_log",
              "tableLoading": false
            }

 

font 相关参数,若整体布局风格不改的话,几乎不用动。

query 与 rawQuery 对应图表显示的sql  其中配合相关变量引用。

重点在:rows  、templating  两个JSON 中,

可根据自己的风格,适当更改坐标类、时间类、颜色类、SQL,不同种图表类型等等。

可以根据此方法多下载几个JSON看一下。很快就能上手 做 自定义监控 看板

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值