clickhouse(七、集群监控)
文章目录介绍chproxygrafanaprometheus安装配置chproxyprometheusgrafana监控配置配置DataSources导入模板查看效果结尾介绍集群监控对于一个生产应用的重要性不言而喻。今天我们就来看下clickhouse集群监控的实践。对于还不熟悉clickhouse相关组件的朋友,本节有必要先介绍一些工具。chproxy首先在使用ck集群时,通常我们通过会利用到
介绍
集群监控对于一个生产应用的重要性不言而喻。今天我们就来看下clickhouse集群监控的实践。对于还不熟悉clickhouse相关组件的朋友,本节有必要先介绍一些工具。
chproxy
首先在使用ck集群时,我们通常会利用到 chproxy 这个开源的代理工具,主要用于负载均衡、并发控制、用户权限控制等操作。
grafana
grafana支持多种数据源,丰富的图表展示,是一款美观、强大的可视化监控指标展示工具。
prometheus
监控需要我们采集系统数据,那么源源不断采集的数据我们也需要有个地方进行存储,所以这里采用prometheus这款优秀的时序数据库。
安装配置
chproxy
- 下载
我们在releases中选择最新的版本。
# 下载
wget https://github.com/Vertamedia/chproxy/releases/download/v1.14.0/chproxy-linux-amd64-v1.14.0.tar.gz
# 解压
tar zxvf chproxy-linux-amd64-v1.14.0.tar.gz
- 配置
然后新建一个配置文件config.yml
,github 中有样例配置参考。
我这里配置两个节点,用户名是default
,密码为空。可以自定义监听的端口,我这里配置的19000,后续的prometheus中会用到。
# config.yml简单配置,
server:
http:
listen_addr: ":19000"
allowed_networks: ["192.168.9.225","192.168.9.226"]
users:
- name: "default"
to_cluster: "dc_sit"
to_user: "default"
password: ""
clusters:
- name: "dc_sit"
nodes: [
"dc-sit-225:8123",
"dc-sit-226:8123"
]
heartbeat_interval: 30s
users:
- name: "default"
password: ""
- 启动
命令:./chproxy -config=config.yml
如果日志打印如下successful则为正常启动。否则根据提示处理下异常。
INFO: 2020/05/12 04:58:13 main.go:53: Loading config "config.yml": successful
INFO: 2020/05/12 04:58:13 main.go:152: Serving http on ":19000"
- 测试
# 外网限制
sun_mac:~ sun$ echo 'SELECT 1' | curl 'http://dc-sit-225:19000/?user=default' --data-binary @-
http connections are not allowed from 192.168.64.49:62164
# 内网通过
[root@dc-sit-225 ~]# echo 'SELECT 1' | curl 'http://dc-sit-225:19000/?user=default' --data-binary @-
1
- chproxy去除网络限制
默认情况下chproxy是有安全检查的,因为代理中配置账号密码,对allowed_networks: ["0.0.0.0/0"]
这种开放网络是限制不推荐的。但如果自己来保证网络安全的话,也可以通过在最外层配置hack_me_please: true
来禁用所有与安全相关的检查。这样注释掉之前allowed_networks
配置,就可以实现对外开放了。这个部分github上有说明。
prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.18.1/prometheus-2.18.1.linux-amd64.tar.gz
- 配置
解压后修改配置文件prometheus.yml
,主要修改scrape_configs
部分配置,这里的命名我们指定clickhouse-chproxy
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'clickhouse-chproxy'
scrape_interval: 10s
static_configs:
- targets: ['dc-sit-225:19000']
labels:
instance: 'dc_sit'
- 启动
命令:./prometheus --config.file=prometheus.yml
- 校验
启动后打开 http://localhost:9090/targets,查看chproxy状态是否正常。
grafana
- 安装
grafana我们可以采用简洁的docker安装。
# 获取镜像
docker pull grafana/grafana
# 后台启动容器,将23000映射到容器的3000
docker run -d -p 23000:3000 --name=my-grafana -v /data/grafana:/var/lib/grafana grafana/grafana
- 登录
打开http://localhost:23000/ ,账号/密码: admin/admin。
监控配置
配置DataSources
设置 -> Data Sources -> Add data source -> 选择prometheus类型。
- settings
根据自身配置修改,我这里命名的Prometheus-225
,然后Save & Test
导入模板
首先下载chproxy的exporter模板,保存为chproxy.json。之前在grafana中选择 + 号import,
名称可以自定义、prometheus数据源选择上面我们配置的Prometheus-225,然后导入。
查看效果
dashboard可以看到各时段的请求数、请求时长、用户并发数、各节点状态等多项指标。非常方便我们获取到集群的运行状况。
结尾
因为控制篇幅的因素,本节主要描述集群监控部分。还有些重要的模块、如prometheus提供的报警组件alertmanager,报警hook服务等之后再介绍。
另外grafana和prometheus的组合还常用来监控集群各节点的状态,node_exporter,以及clickhouse单个组件监控clickhouse_exporter,如果上述集群能配置出来,相信单个节点大家也不会有太大问题。
更多推荐
所有评论(0)