怎么监控存储陈列运行状态_ClickHouse的运行指标监控可以怎么玩?

一般来说,当咱们的 ClickHouse 要在生产环境上线的时候,关于对 CH 的运行监控工作就必须提到议程上来了。

ClickHouse 在工作的过程中,会将一些个自身的运行状态记录到众多系统表中( sysytem.*)。所以我们对于 CH 自身的一些运行指标的监控数据,也主要来自这些系统表。

但是直接查询这些系统表会有一些不足之处:

首先,这种方式太过底层,不够直观,我们还需要在此之上加入一些可视化的直观表达;

其次,系统表只记录了CH自己的运行指标,有些时候我们需要外部系统的指标进行关联分析,例如 ZooKeeper、服务器 CPU、IO 等等。

现在比较主流的监控组合拳是 Prometheus + Grafana, 其中 Prometheus 负责收集各类系统的运行指标; Grafana 负责可视化的部分。

ClickHouse 从 v20.1.2.4 开始,内置了对接 Prometheus 的功能,可以将其作为 Prometheus 的 Endpoint 服务,从而自动的将 metrics、events 和 asynchronous_metrics 三张系统的表的数据发送给 Prometheus。

而配置的方式也很简单,接下来我们用一个简单示例说明:

首先,我们需要在 CH 的 config.xml 中增加 prometheus 配置:

  <prometheus>        <endpoint>/metricsendpoint>        <port>9363port>        <metrics>truemetrics>        <events>trueevents>        <asynchronous_metrics>trueasynchronous_metrics>        <status_info>truestatus_info>  prometheus>
之后,我们就可以访问到 CH 实例的 /metrics 服务,例如:

nauu@Boness-MBP ~ % curl http://10.37.129.9:9363/metrics# HELP ClickHouseProfileEvents_Query Number of queries to be interpreted and potentially executed. Does not include queries that failed to parse or were rejected due to AST size limits, quota limits or limits on the number of simultaneously running queries. May include internal queries initiated by ClickHouse itself. Does not count subqueries.# TYPE ClickHouseProfileEvents_Query counterClickHouseProfileEvents_Query 218# HELP ClickHouseProfileEvents_SelectQuery Same as Query, but only for SELECT queries.# TYPE ClickHouseProfileEvents_SelectQuery counterClickHouseProfileEvents_SelectQuery 186# HELP ClickHouseProfileEvents_InsertQuery Same as Query, but only for INSERT queries.# TYPE ClickHouseProfileEvents_InsertQuery counterClickHouseProfileEvents_InsertQuery 0# HELP ClickHouseProfileEvents_FailedQuery Number of failed queries.# TYPE ClickHouseProfileEvents_FailedQuery counterClickHouseProfileEvents_FailedQuery 46# HELP ClickHouseProfileEvents_FailedSelectQuery Same as FailedQuery, but only for SELECT queries.# TYPE ClickHouseProfileEvents_FailedSelectQuery counterClickHouseProfileEvents_FailedSelectQuery 36# HELP ClickHouseProfileEvents_FailedInsertQuery Same as FailedQuery, but only for INSERT queries.# TYPE ClickHouseProfileEvents_FailedInsertQuery counterClickHouseProfileEvents_FailedInsertQuery 0
Prometheus 就是通过这个服务收集 CH 系统的相关指标。

接着,我们安装 Prometheus:

docker pull prom/prometheus
在 prometheus.yml 中增加 CH 的 Endpoint 地址:

  - job_name: 'prometheus'    # metrics_path defaults to '/metrics'    # scheme defaults to 'http'.    static_configs:    - targets: ['localhost:9090']  - job_name: clickhouse-1    static_configs:      - targets: ['10.37.129.9:9363']
启动 Prometheus:

docker run --name prometheus -d -p 127.0.0.1:9090:9090   -v /Users/nauu/clickhouse/storage4docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml  prom/prometheus
启动之后,我们在 Targets 菜单里面就能看到 CH 的 Endpoint 了。 

现在我们进行最后一步,安装 Grafana :

docker pull grafana/grafanadocker run -d \  -p 3000:3000 \  --name=grafana \  -v /Users/nauu/clickhouse/storage4docker/grafana:/var/lib/grafana \  grafana/grafana
登入 Grafana 后,在 Data Sources 中 添加 Prometheus 数据源:

之后新建 dashboard, 我们就能够通过 Prometheus 的数据源选取到 ClickHouse 的运行指标了:

至此,通过 ClickHouse 内置 Endpoint + Prometheus + Grafana 的监控组合拳就成型了。至于我们常见的一些监控指标,今后我再专门用一篇文章来聊一聊吧。
————————————————
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章