clickhouse运维监控之ckman

一、ckman简介


通过网页端的可视化界面,ckman可以非常便捷的完成集群的导入、部署、节点的增删以及性能指标的监控等功能,可以大大简化集群部署的操作流程,从而起到事半功倍的效果。

二、ckman架构




  ckman支持多中心部署,使用nacos进行配置同步,可以对多个集群进行管理,在集群的每个节点下,如果配置node_exporter,则可以对对应的节点进行指标监控。node_exporter的数据传给prometheus,然后在前端展示。

三、ckman编译


Linux & MacOS下编译

编译环境配置

1. 安装Node.js


由于ckman将前端代码静态嵌入到了server中,因此需要安装Node.js以编译前端代码:

MacOS上安装Node.js:
brew install node

Linux下安装Node.js:
yum install -y nodejs

安装完成后,在frontend目录下执行:
cd frontend
sudo rm -rf node_modules package-lock.json && npm install

2. 安装pkger

go get github.com/markbates/pkger/cmd/pkger

3. 安装swag

go get -u github.com/swaggo/swag/cmd/swag

4. 安装 nfpm2.2.4

nfpm是一款用来打包rpm的工具,如果不打算做成rpm包,可以不安装。

由于nfpm新版本配置文件和旧版本差别很大,建议安装指定的2.2.4版本。
wget -q https://github.com/goreleaser/nfpm/releases/download/v2.2.4/nfpm_2.2.4_Linux_x86_64.tar.gz
tar -xzvf nfpm_2.2.4_Linux_x86_64.tar.gz
cp nfpm /usr/local/bin
编译命令

Linux和MacOS下编译命令都是一样的:
make package VERSION=x.x.x   
以上命令会编译成打包成一个tar.gz安装包,该安装包解压即可用。

VERSION是指定的版本号,如果不指定,则默认生成一个版本号为trunk的版本。

rpm编译
make rpm VERSION=x.x.x
deb编译
make deb VERSION=x.x.x
Docker编译

鉴于编译环境的诸多依赖,配置起来可能比较麻烦,因此也提供了docker编译的方式,直接运行下面的命令即可:
make docker-build VERSION=x.x.x

如果想利用docker编译rpm版本,可以先进入docker环境,再编译:
make docker-sh
make rpm VERSION=x.x.x

四、ckman安装部署


ckman部署分为rpm包安装和tar.gz包安装。其实只是提供的安装包不一样,实际安装还是一样的。

1.rpm安装

安装

rpm安装直接使用命令安装即可:
rpm -ivh ckman-1.2.5.x86_64.rpm

安装完成后,在/etc/ckman目录下,会生成工作目录(日志和配置文件等都在该目录下)。

启动

rpm方式安装的ckman有两种启动方式:
方式一:
/usr/local/bin/ckman -c=/etc/ckman/conf/ckman.yaml -p=/run/ckman/ckman.pid -l=/var/log/ckman/ckman.log -d

方式二:
systemctl start ckman

2.tar.gz包安装

安装

可以在任意目录进行安装。安装方式为直接解压安装包即可。
tar -xzvf ckman-1.5.0-201216-6b03a3a.Linux.x86_64.tar.gz
启动
进入ckman的工作目录,执行:
cd ckman
bin/start

启动之后,在浏览器输入 http://localhost:8808  跳出如下类似界面,说明启动成功:

 

 

docker启动

从v1.2.7版本开始,ckman支持从docker镜像启动。启动命令如下所示:
docker run -itd -p 8808:8808 --restart unless-stopped --name ckman quay.io/housepower/ckman:latest

 

但是需要注意的是,搭建promethues和nacos并不属于ckman程序自身的范畴,因此,从容器启动ckman默认是关闭nacos的,且前台Overview监控不会正常显示。

如果想自己配置nacos和prometheus,可以进入容器自行配置。

3.ckman配置文件

ckman的配置文件在ckman 的工作目录下的conf/ckman.yml。

一级选项 二级选项 默认值 说明
server id 1 ckman集群id,同一个集群的ckman的id号配置必须不同
  port 8808 ckman默认的http端口
  https false 是否支持https,默认为不支持
  pprof true 是否支持pprof监控,默认支持
  session_timeout 3600 会话超时(token失效)时间,默认为1个小时
  publick_key   接入擎创统一门户用来解析token的公钥
  swagger_enable false 是否开启swagger文档,默认不开启
log level INFO 日志级别,默认为INFO
  max_count 5 滚动日志数量
  max_size 10 单个日志大小,默认为10M
  max_age 10 日志有效生命周期,默认为10天
prometheus hosts 127.0.0.1:9090 普罗米修斯监控的ip和端口
  timeout 10 普罗米修斯的超时时间
nacos enabled true 是否开启nacos,默认为true
  hosts 127.0.0.1 nacos服务的ip
  port 8848 nacos服务的端口
  user_name nacos 登录nacos的用户名
  password 0192023A7BBD73250516F069DF18B500 登录nacos的密码
  namespace   指定nacos的namespace,默认为DEFAULT
  group DEFAULT_GROUP 向nacos注册的服务所处的组
  data_id ckman 向nacos注册的服务名称、数据项名称



五、安装部署node_exporter和prometheus

1.下载安装包

 cd /usr/local/src/
 wget https://github.com/prometheus/prometheus/releases/download/v2.4.2/prometheus-2.4.2.linux-amd64.tar.gz
 wget https://github.com/prometheus/alertmanager/releases/download/v0.15.2/alertmanager-0.15.2.linux-amd64.tar.gz
 wget https://github.com/prometheus/node_exporter/releases/download/v0.16.0/node_exporter-0.16.0.linux-amd64.tar.gz

2.安装 Prometheus

创建 prometheus 用户。

 groupadd prometheus
 useradd -g prometheus -m -d /var/lib/prometheus -s /sbin/nologin prometheus

解压安装包。

 tar xf prometheus-2.4.2.linux-amd64.tar.gz -C /usr/local/
 cd /usr/local/
 mv prometheus-2.4.2.linux-amd64/ prometheus

创建启动脚本:

 vim /usr/lib/systemd/system/prometheus.service
 
添加如下内容:
 
[Unit]
Description=prometheus
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --storage.tsdb.retention=15d --log.level=info
Restart=on-failure
[Install]
WantedBy=multi-user.target

3.安装 node_exporter

在 Prometheus 节点另一台节点上分别安装 node_exporter。

 tar xf node_exporter-0.16.0.linux-amd64.tar.gz -C /usr/local/
 cd /usr/local/
 mv node_exporter-0.16.0.linux-amd64/ node_exporter
 chown -R prometheus.prometheus node_exporter/

创建 node_exporter 启动脚本:

vim /usr/lib/systemd/system/node_exporter.service 
 
添加如下内容:
 
[Unit]
Description=node_export
Documentation=https://github.com/prometheus/node_exporter
After=network.target
 
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target

注意:node_exporter 的运行用户也是 prometheus 用户需要在每台节点上都创建该用户。

启动 node_exporter 服务:

 systemctl enable node_exporter.service
 systemctl start node_exporter.service
 systemctl status node_exporter.service
 ss -tnl | grep 9100

六、配置 Prometheus 添加监控目标

 cd /usr/local/prometheus
 vim prometheus.yml 


scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
 
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
 
    static_configs:
    - targets: ['localhost:9090','localhost:9100'] # 对本机node_exporter 监控
 
# 新添加的对其它node节点抓取数据
  - job_name: '111.4'
    #重写了全局抓取间隔时间,由15秒重写成5秒。
    scrape_interval: 5s
    static_configs:
    - targets: ['192.168.111.4:9100']

启动 Prometheus 服务:

 chown -R prometheus.prometheus prometheus/
 systemctl enable prometheus.service
 systemctl start prometheus.service
 systemctl status prometheus.service

注意:要留意启动之前的目录权限更改,否则可能会在启动的时候报错"Unable to create data directory" err="mkdir data/: permission denied"

node_exporter和prometheus不一定要部署在同一台主机,在prometheus的配置文件中指定监控的node_exporter即可。

static_configs:
    - targets: ['localhost:9100']
node_exporter一般是用来监控系统性能指标的,因此一般是配置在各个节点上。

prometheus和ckman不一定要配置在同一台主机,在ckman配置文件中指定prometheus的地址和端口即可。
prometheus:
  hosts:
    - 192.168.11.173:9090

 

posted @ 2022-07-21 17:45  渐逝的星光  阅读(1806)  评论(0编辑  收藏  举报