# 运维监控工具 ## 概述 长安链采用了普罗米修斯(`Prometheus`)的监控体系,提供了脚本文件,帮助用户快速搭建基于`Docker`的普罗米修斯可视化监控环境,并基于该环境进行长安链节点的可视化监控。 ## 环境依赖 ### docker - **centos系统** > 参考:https://docs.docker.com/engine/install/centos/ ```bash $ yum install docker-io $ service docker restart Redirecting to /bin/systemctl restart docker.service ``` - **ubuntu系统** > 参考:https://docs.docker.com/engine/install/ubuntu/ ```bash $ sudo apt-get remove docker docker-engine docker.io containerd runc $ sudo apt-get update $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg $ echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null $ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io ``` ### docker-compose > 参考:https://docs.docker.com/compose/install/ ```bash $ sudo curl -L "https://github.com/docker/compose/releases/download/1.28.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose ``` ## 操作步骤 ### 链启动 > 详细说明,请见【快速入门】,这里描述下关键步骤 > > 注:配置文件`chainmaker/config/config_tpl/chainmaker.yml`的`monitor`开关需要开启,默认是开启状态 > > ```bash > monitor: > enabled: true > ``` ```bash # 进入脚本目录 $ cd chainmaker-go/scripts # 创建单链4节点集群配置文件及证书 $ ./prepare.sh 4 1 # 生成安装包 $ ./build_release.sh # 启动链 $ ./cluster_quick_start.sh normal # 查看节点启动情况 $ ps -ef|grep chainmaker 30219 2326 3 17:56 pts/5 00:00:03 ./chainmaker start -c ../config/wx-org1.chainmaker.org/chainmaker.yml 30239 2326 4 17:56 pts/5 00:00:03 ./chainmaker start -c ../config/wx-org2.chainmaker.org/chainmaker.yml 30256 2326 4 17:56 pts/5 00:00:03 ./chainmaker start -c ../config/wx-org3.chainmaker.org/chainmaker.yml 30277 2326 4 17:56 pts/5 00:00:03 ./chainmaker start -c ../config/wx-org4.chainmaker.org/chainmaker.yml ``` ### 配置修改 #### 配置Prometheus监控目标 > 配置文件路径:`chainmaker-go/monitor/prometheus.yml` > > 修改以下配置: > > - `job_name`:为节点的`org_id` > - `targets`:为节点地址 ```yaml - job_name: 'wx-org1.chainmaker.org' scrape_interval: 1s static_configs: - targets: ['172.29.0.1:14321'] - job_name: 'wx-org2.chainmaker.org' scrape_interval: 1s static_configs: - targets: ['172.29.0.1:14322'] - job_name: 'wx-org3.chainmaker.org' scrape_interval: 1s static_configs: - targets: ['172.29.0.1:14323'] - job_name: 'wx-org4.chainmaker.org' scrape_interval: 1s static_configs: - targets: ['172.29.0.1:14324'] ``` #### 配置Grafana > 配置文件路径:`chainmaker-go/monitor/grafana.ini` > > 主要是修改`[database]`栏位配置,其他配置按需修改 ```toml [database] type = mysql host = 172.29.0.5:3306 name = grafana user = chainmaker password = chainmaker url = ``` ### 组件启动 ```bash $ docker-compose -f docker-compose.yml up -d Creating network "monitor_prometheus" with driver "bridge" Creating volume "monitor_prometheus_data" with default driver Creating volume "monitor_influxdb_data" with default driver Creating volume "monitor_grafana_data" with default driver Creating volume "monitor_mysql_data" with default driver Creating mysql ... Creating influxdb ... Creating influxdb Creating influxdb ... done Creating prom ... Creating prom ... done Creating grafana ... Creating grafana ... done ``` ### 配置Influx #### 创建账号和数据库 ```bash $ docker exec -it influxdb bash root@influxdb:/# influx Connected to http://localhost:8086 version 1.8.1 InfluxDB shell version: 1.8.1 > CREATE USER chainmaker WITH PASSWORD 'chainmaker' WITH ALL PRIVILEGES; > CREATE DATABASE prometheus; ``` #### 查看表 ```bash > use prometheus; Using database prometheus > show measurements; name: measurements name ---- chainmaker_committer_metric_block_commit_time_bucket chainmaker_committer_metric_block_commit_time_count chainmaker_committer_metric_block_commit_time_sum chainmaker_committer_metric_block_counter chainmaker_committer_metric_block_size_bucket chainmaker_committer_metric_block_size_count chainmaker_committer_metric_block_size_sum chainmaker_committer_metric_tx_counter chainmaker_grpc_grpc_msg_received_time_bucket chainmaker_grpc_grpc_msg_received_time_count chainmaker_grpc_grpc_msg_received_time_sum chainmaker_grpc_grpc_msg_received_total chainmaker_proposer_metric_block_package_time_bucket chainmaker_proposer_metric_block_package_time_count chainmaker_proposer_metric_block_package_time_sum chainmaker_rpcserver_metric_invoke_request_counter chainmaker_rpcserver_metric_query_request_counter chainmaker_scheduler_metric_vm_run_time_bucket chainmaker_scheduler_metric_vm_run_time_count chainmaker_scheduler_metric_vm_run_time_sum chainmaker_txpool_metric_tx_pool_size chainmaker_verifier_metric_block_verify_time_bucket chainmaker_verifier_metric_block_verify_time_count chainmaker_verifier_metric_block_verify_time_sum etcd_disk_wal_fsync_duration_seconds_bucket etcd_disk_wal_fsync_duration_seconds_count etcd_disk_wal_fsync_duration_seconds_sum etcd_disk_wal_write_bytes_total ...... ``` ### 监控状态查询 登录普罗米修斯控制台,查看目标服务连接是否正常 > 控制台: http://localhost:9090/targets ### 配置Grafana #### 登录控制台 > http://localhost:3000/login > > 用户名:`admin` > > 密码:`chainmaker` #### 添加数据源 > http://localhost:3000/datasources 选择`Prometheus`数据源,填入`URL`后,点击`Save & Test`按钮进行测试,测试通过会显示`Data source is working`的提示。 #### 导入仪表盘 > http://localhost:3000/dashboard/import > > 仪表盘模板存放路径:`chainmaker-go/monitor/dashboard.json` ## 监控效果展示 > 导入仪表盘后,便可查看到监控效果