详解 ClickHouse 的监控及备份

一、ClickHouse 监控概述

  • ClickHouse 运行时会将一些个自身的运行状态记录到众多系统表中(system.*)。所以对于 ClickHouse 自身的一些运行指标的监控数据,也主要来自这些系统表。
  • 直接查询这些系统表进行监控会有一些不足之处:
    • 这种方式太过底层,监控结果不够直观,还需要在此之上实现可视化展示
    • 系统表只记录了 ClickHouse 自身的运行指标,有些时候还需要外部系统的指标进行关联分析,例如 ZooKeeper、服务器 CPU、IO 等。
  • 目前市面上 Prometheus + Grafana 的组合进行监控比较流行,安装简单易上手,可以集成很多框架,包括服务器的负载,其中 Prometheus 负责收集各类系统的运行指标,Grafana 负责可视化的部分。
  • ClickHouse 从 v20.1.2.4 开始,内置了对接 Prometheus 的功能,配置的方式也很简单,可以将其作为 Prometheus 的 Endpoint 服务,从而自动的将 metrics 、 events 和 asynchronous_metrics 三张系统的表的数据发送给 Prometheus。

二、Prometheus 和 Grafana 的安装

1. Prometheus 安装

Prometheus 下载地址:https://prometheus.io/download/

  • 将 Prometheus 的安装包 prometheus-2.26.0.linux-amd64.tar.gz 上传到虚拟机节点

  • 解压安装包

    shell 复制代码
    cd /opt/software
    
    tar -zxvf prometheus-2.26.0.linux-amd64.tar.gz -C /opt/module
    
    cd /opt/module
    
    mv prometheus-2.26.0.linux-amd64 prometheus-2.26.0
  • 修改配置文件

    shell 复制代码
    cd /opt/module/prometheus-2.26.0
    vim prometheus.yml
    
    #添加 ClickHouse 监控配置(注意缩进)
     - job_name: 'clickhouse-1'
         static_configs:
         - targets: ['hadoop102:9363']
         
    
    #配置说明:
    #1、global 配置块:控制 Prometheus 服务器的全局配置
      #1.1 scrape_interval:配置拉取数据的时间间隔,默认为 1 分钟。
      #1.2 evaluation_interval:规则验证(生成 alert)的时间间隔,默认为 1 分钟。
    #2、rule_files 配置块:规则配置文件
    #3、scrape_configs 配置块:配置采集目标相关, prometheus 监视的目标。Prometheus 自身的运行信息可以通过 HTTP 访问,所以 Prometheus 可以监控自己的运行数据。
      #3.1 job_name:监控作业的名称
      #3.2 static_configs:表示静态目标配置,就是固定从某个 target 拉取数据
      #3.3 targets:指定监控的目标,其实就是从哪儿拉取数据。Prometheus 会从http://hadoop1:9090/metrics 上拉取数据。
    #Prometheus 是可以在运行时自动加载配置的。启动时需要添加:--web.enable-lifecycle
  • 启动 Prometheus Server

    shell 复制代码
    cd /opt/module/prometheus-2.26.0
    
    nohup ./prometheus --config.file=prometheus.yml > ./prometheus.log 2>&1 &
  • 登录 web 端查看:http://[host]:9090/,点击 Status,选中 Targets

2. Grafana 安装

Grafana 下载地址:https://grafana.com/grafana/download

  • 将 Grafana 的安装包 grafana-7.5.2.linux-amd64.tar.gz 上传到虚拟机节点

  • 解压安装包

    shell 复制代码
    cd /opt/software
    tar -zxvf grafana-7.5.2.linux-amd64.tar.gz -C /opt/module
    
    cd /opt/module
    
    mv grafana-7.5.2.linux-amd64.tar.gz grafana-7.5.2
  • 启动 Grafana

    shell 复制代码
    cd /opt/module/grafana-7.5.2
    
    nohup ./bin/grafana-server web > ./grafana.log 2>&1 &
  • 登录 web 端查看:http://[host]:3000,默认用户名和密码为 admin

三、ClickHouse 配置

  • 修改 ClickHouse 配置文件

    shell 复制代码
    sudo vim /etc/clickhouse-server/config.xml
    
    #打开prometheus注释
    <prometheus>
        <endpoint>/metrics</endpoint>
        <port>9363</port>
        <metrics>true</metrics>
        <events>true</events>
        <asynchronous_metrics>true</asynchronous_metrics>
        <status_info>true</status_info>
    </prometheus>
    
    #如果有多个 CH 节点,分发配置
  • 启动 ClickHouse 服务

    shell 复制代码
    sudo clickhouse restart
  • 访问 web 查看:http://[host]:9363/metrics,看到信息说明 ClickHouse 开启 Metrics 服务成功

四、Grafana 集成 Prometheus

  • 在 Grafana 的 web 页面上添加 Prometheus 数据源
    • 在首页左侧菜单栏点击配置菜单,然后点击 Data Sources 按钮
    • 在 Data Sources 页面点击 Add data source 按钮
    • 在搜索框查找 Prometheus,在展示结果里选择点击 select 按钮
    • 在 Prometheus 设置页面填写名称、url 等相关配置信息,然后点击 save&test 按钮
    • 出现绿色的提示框,表示与 Prometheus 正常联通,点击 back 按钮返回 Data Sources 页面,出现了添加的 Prometheus
  • 添加 ClickHouse 监控看板
    • 通过 https://grafana.com/dashboards 网站,可以找到大量可直接使用的 Dashboard 模板,选择一个下载,下载内容为一个 json 文件
    • 在 Grafana 首页左侧菜单栏点击 + 按钮,然后点击 import 按钮
    • 在导入页面点击 upload json file 按钮,上传下载的 Dashboard 模板
    • 配置关联已经添加的 Prometheus 数据源
    • 查看监控看板内容并保存看板

五、备份及恢复

官网:https://clickhouse.tech/docs/en/operations/backup/

1. 手动恢复及备份

  • 创建备份路径

    shell 复制代码
    sudo mkdir -p /var/lib/clickhouse/shadow/
    
    sudo chown clickhouse:clickhouse /var/lib/clickhouse/shadow/
    #如果目录存在,先清空目录下的数据
  • 执行备份命令

    shell 复制代码
    echo -n 'alter table t_order_mt freeze' | clickhouse-client
  • 将备份数据保存到其他路径

    shell 复制代码
    #创建备份存储路径
    sudo mkdir -p /var/lib/clickhouse/backup/
    sudo chown clickhouse:clickhouse /var/lib/clickhouse/backup/
    
    #拷贝数据到备份路径
    sudo cp -r /var/lib/clickhouse/shadow/ /var/lib/clickhouse/backup/my-backup-name
    
    #为下次备份准备,删除 shadow 下的数据
    sudo rm -rf /var/lib/clickhouse/shadow/*
  • 恢复数据

    shell 复制代码
    #拷贝t_order_mt的建表语句到 events.sql 文件
    
    #模拟删除备份过的表
    echo 'drop table t_order_mt' | clickhouse-client
    
    #重新创建表
    cat events.sql | clickhouse-client
    
    #将之前备份的表分区目录复制到新创建表的 detached 目录
    sudo cp -rl /var/lib/clickhouse/backup/my-backup-name/1/store/cb1/cb176503-cd88-4ea8-8b17-6503cd888ea8/* /var/lib/clickhouse/data/default/t_order_mt/detached/
    
    #执行 attach
    echo 'alter table t_order_mt attach partition 20200601' | clickhouse-client
    
    #在 clickhouse 中查看数据
    select * from t_order_mt;

2. 使用 clickhouse-backup 自动备份及恢复

工具地址:https://github.com/AlexAkulov/clickhouse-backup/

相关推荐
唯余木叶下弦声4 小时前
Python连接Kafka收发数据等操作
大数据·分布式·python·kafka
v(kaic_kaic)6 小时前
基于STM32热力二级管网远程监控系统设计(论文+源码)_kaic
android·数据库·学习·mongodb·微信·目标跟踪·小程序
ONE_one_plus6 小时前
1分钟理解脏读、幻读与不可重复读
数据库·mysql
非法小恋6 小时前
华为GaussDB数据库之Yukon安装与使用
数据库·gaussdb
m0_689087077 小时前
9.28 Qt界面
开发语言·数据库·qt
大龙@、7 小时前
MongoDB简介
数据库·mongodb
codelife3217 小时前
MongoDB 入门及实践
数据库·mongodb
42fourtytoo7 小时前
SQL总结
数据库·python·sql·计算机网络·安全·网络安全