前言:关于clickhouse的监控和可视化界面,想必刚接触到ch的人是一头雾水,大厂往往会给ch集群定制各种监控和可视化分析,普通用户就需要我们自己寻求现成的开源工具,在一些常见的开源工具上,我们可以较好的使用和定制我们想要展示的内容。
本文从grafana和metabase两个组件出发,分析了其安装和配合ch使用的过程。
下载安装,见[1][2],ch需要注意下载插件并解压到插件目录即可。
可以直接导入json来完成clickhouse的看板的生成。
ClickHouse Queries
该看板要开启clickhouse的log配置才可以使用,其它的看板也有和其它监控工具结合完成的。
1
大部分的监控都是基于system下的query_log,events和metrics等表完成的。
我们也可以自己定制一些个性化的SQL展示出来,在这一点上与Metabase有点相似。
之前笔者也分析过一些关于metabase的安装等文章,所以对metabase比较熟悉,在得知其也支持clickhouse时,当然也是赶紧试用一下。除了metabase,业界使用的最多的是superset工具来做ch的数据分析可视化操作。
由于metabase默认没有clickhouse驱动,我们需要在额外添加该插件,如果你已经启动过metabase,会发现当前目录有plugins,将driver放入重启即可。(注意插件与metabase版本的对应关系,不然会出现一些使用异常,不然会出现如下异常)
No method in multimethod 'connection-details->spec' for dispatch value: :clickhouse
根据参考文章中的一些提示可以使用变量指定启动的端口号等配置:
export MB_JETTY_PORT=8080
出现如下异常:Distinct, non-empty sequence of Field clauses
这里出现的原因主要是metabase没有扫描完成我们的库,因为metabase需要把我们库中的字段等信息存储起来,没有扫描完成自然就没办法展示数据,笔者使用0.35版本无法扫描完成,更新到0.36版本才正常显示(若依然不能正常显示可在管理页面重新触发扫描)。
docker命令:
docker run -d -p 3000:3000 --name metabase metabase/metabase
挂载clickhouse-driver的启动:
docker run -d -p 3000:3000 \
--mount type=bind,source=/path/to/plugins,destination=/plugins \
--name metabase metabase/metabase
简单的表test_zookeeper(之前测试使用的表),结合官方文档的测试sql,完成几个场景的构建,建表语句:
CREATE TABLE default.test_zookeeper
(
`Id` Int32,
`Code` Int32,
`Type` String
) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/default_test_zookeeper',
'{replica}') PARTITION BY Code ORDER BY (Id, Code)
SETTINGS index_granularity = 8192;
首先是当前表的count数,Code Test Zookeeper为Code出现的次数图,Type Test Zookeeper为Type出现的次数图。
select Code,count(Type) as count from test_zookeeper where Code between 2020 and 2021 group by Code ;
select Type, count(*) as count from test_zookeeper where Code > 2020 group by Type order by count(*) desc;