作者:ShunWah
在运维管理领域,我拥有多年深厚的专业积累,兼具坚实的理论基础与广泛的实践经验。我始终站在技术前沿,致力于推动运维自动化,不懈追求运维效率的最大化。
我精通运维自动化流程,对于OceanBase、MySQL等多种数据库的部署与运维,具备从初始部署到后期维护的全链条管理能力。凭借OceanBase的OBCA和OBCP认证、OpenGauss社区认证结业证书,以及崖山DBCA、亚信AntDBCA、翰高HDCA、GBase 8a | 8c | 8s、Galaxybase GBCA、Neo4j Graph Data Science Certification、NebulaGraph NGCI & NGCP等多项权威认证,我不仅展现了自己的专业技能,也彰显了对技术的深厚热情与执着追求。
在OceanBase & 墨天轮的技术征文大赛中,我凭借卓越的技术实力和独特的见解,多次荣获一、二、三等奖。同时,在OpenGauss第五届、第六届、第七届技术征文大赛,TiDB社区第三届专栏征文大赛,金仓数据库有奖征文活动,以及首批YashanDB「产品体验官」尝鲜征文等活动中,我也屡获殊荣。此外,我还活跃于墨天轮、CSDN等技术平台,经常发布原创技术文章,并多次被首页推荐,积极与业界同仁分享我的运维经验和独到见解。
前言
NebulaGraph Dashboard (社区版)监控:提升集群管理效率的利器
随着图数据库技术的发展,图数据库以其独特的数据结构和高效的查询性能,成为了处理复杂关系数据的首选。NebulaGraph,作为一款开源的分布式图数据库,凭借其强大的功能和灵活的扩展性,赢得了众多开发者和企业的青睐。而NebulaGraph Dashboard(简称 Dashboard)则是NebulaGraph生态系统中的一款重要工具,它为我们提供了直观、便捷的集群监控体验。
今天,我将与大家分享如何在已部署的NebulaGraph 社区版环境中,使用NebulaGraph Dashboard进行监控的实战操作。在此之前,我们已经成功部署了NebulaGraph 以及NebulaGraph Studio,这两款工具分别为我们提供了强大的图数据存储与查询能力,以及直观的图数据可视化界面。
一、认识 NebulaGraph Dashboard
1. 简介
NebulaGraph Dashboard (简称 Dashboard)是一款用于监控NebulaGraph集群中机器和服务状态的可视化工具。它能够帮助我们实时监控集群的健康状况,包括各个节点的CPU使用率、内存占用、磁盘IO等关键指标,以及NebulaGraph服务的运行状态,如Graph服务、Meta服务和Storage服务的启动情况、连接数等。通过Dashboard,我们可以及时发现并解决集群中的潜在问题,确保图数据库的稳定运行。
2. 主要特性
全面监控 :支持对所有组件(如 Meta、Storage、Graph 服务)进行全方位监控。
实时警报:提供灵活的告警机制,允许用户设置自定义规则并在异常发生时立即通知相关人员。
历史数据分析 :记录详细的性能日志,便于事后分析问题根源并制定改进措施。
多维度视图 :从不同角度展示集群信息,包括但不限于 CPU 使用率、内存占用、磁盘 I/O 等关键指标。
易用性高 :简洁明了的操作界面,无需复杂的命令行操作即可完成大部分管理任务。
二、安装与配置
根据官方文档 NebulaGraph Dashboard 文档,我们可以按照以下步骤快速搭建起一套完整的监控系统:
在部署NebulaGraph 时,Dashboard通常已经作为可选组件一同安装。如果未安装,可以参考官方文档进行手动部署。部署完成后,我们可以通过浏览器访问Dashboard的Web界面。默认情况下,Dashboard的访问地址为http://<Dashboard所在机器的IP>:<Dashboard端口>,其中端口号默认为7001。
1. 准备工作
确保已正确安装并启动了 NebulaGraph 集群。
[root@wc-tyn-1-0018 nebula]# ls
agent agent.sh bin br.gz cluster.id data etc logs nebula-br nebula-console nohup.out pids scripts share
[root@wc-tyn-1-0018 nebula]# ./nebula-console --port 9669 -u root -p nebula
Welcome to Nebula Graph!
(root@nebula) [(none)]> SHOW HOSTS;
+-----------------+------+----------+--------------+-----------------------------------------------------------+-----------------------------------------------------------+---------+
| Host | Port | Status | Leader count | Leader distribution | Partition distribution | Version |
+-----------------+------+----------+--------------+-----------------------------------------------------------+-----------------------------------------------------------+---------+
| "192.168.23.1.190" | 9779 | "ONLINE" | 46 | "biao_test:2, biao_test_02:2, cpt:20, cpt_pro:20, test:2" | "biao_test:2, biao_test_02:2, cpt:20, cpt_pro:20, test:2" | "3.0.1" |
| "192.168.23.1.192" | 9779 | "ONLINE" | 46 | "biao_test:2, biao_test_02:2, cpt:20, cpt_pro:20, test:2" | "biao_test:2, biao_test_02:2, cpt:20, cpt_pro:20, test:2" | "3.0.1" |
| "192.168.23.1.193" | 9779 | "ONLINE" | 46 | "biao_test:2, biao_test_02:2, cpt:20, cpt_pro:20, test:2" | "biao_test:2, biao_test_02:2, cpt:20, cpt_pro:20, test:2" | "3.0.1" |
| "192.168.23.1.194" | 9779 | "ONLINE" | 46 | "biao_test:2, biao_test_02:2, cpt:20, cpt_pro:20, test:2" | "biao_test:2, biao_test_02:2, cpt:20, cpt_pro:20, test:2" | "3.0.1" |
| "192.168.23.1.195" | 9779 | "ONLINE" | 46 | "biao_test:2, biao_test_02:2, cpt:20, cpt_pro:20, test:2" | "biao_test:2, biao_test_02:2, cpt:20, cpt_pro:20, test:2" | "3.0.1" |
+-----------------+------+----------+--------------+-----------------------------------------------------------+-----------------------------------------------------------+---------+
Got 5 rows (time spent 1418/1955 us)
Mon, 20 Jan 2025 16:30:43 CST
(root@nebula) [(none)]>
检查网络连接,保证 Dashboard 能够访问到集群中的每一台机器。
2. 下载 TAR 包
包名:nebula-dashboard-3.4.0.x86_64.tar.gz。
https://oss-cdn.nebula-graph.com.cn/nebula-graph-dashboard/3.4.0/nebula-dashboard-3.4.0.x86_64.tar.gz?_gl=1*1dwxjxf*_ga*MjA4MTYxNzc1Ni4xNzIwMzU0MzE2*_ga_BGGB2REDGM*MTczNzM0MTA1MC4zMi4xLjE3MzczNDE5OTguNjAuMC4w
3. 解压缩 TAR 包
执行命令tar -xvf nebula-dashboard-3.4.0.x86_64.tar.gz解压缩。
[root@wc-tyn-1-0018 opt]# ls
nebula-dashboard-3.4.0.x86_64.tar.gz rh
[root@wc-tyn-1-0018 opt]# tar -xvf nebula-dashboard-3.4.0.x86_64.tar.gz
nebula-dashboard/
nebula-dashboard/bin/
nebula-dashboard/bin/webserver
nebula-dashboard/vendors/
nebula-dashboard/vendors/prometheus/
nebula-dashboard/vendors/prometheus/prometheus
nebula-dashboard/vendors/prometheus/prometheus.yml
nebula-dashboard/vendors/nebula-http-gateway/
nebula-dashboard/vendors/nebula-http-gateway/nebula-httpd
nebula-dashboard/vendors/nebula-http-gateway/conf/
nebula-dashboard/vendors/nebula-http-gateway/conf/app.conf
nebula-dashboard/vendors/nebula-stats-exporter/
nebula-dashboard/vendors/nebula-stats-exporter/nebula-stats-exporter
nebula-dashboard/vendors/nebula-stats-exporter/config.yaml
nebula-dashboard/vendors/node-exporter/
nebula-dashboard/vendors/node-exporter/node_exporter
nebula-dashboard/docker-compose.yaml
nebula-dashboard/public/
nebula-dashboard/public/83c4874d8ff0a37a26c3.png
nebula-dashboard/public/main.1314ff9d9190129689ac.js.LICENSE.txt
nebula-dashboard/public/58.a9df982efeb3a3cf1e70.js.LICENSE.txt
nebula-dashboard/public/4b5c5bc92723fc9bc4df.png
nebula-dashboard/public/manifest.c6699558e0f57dc8f8d5.js
nebula-dashboard/public/main.1314ff9d9190129689ac.js
nebula-dashboard/public/favicon.ico
nebula-dashboard/public/vendors.0cefaabbe8d466f8e90f.css
nebula-dashboard/public/vendors.9ddf626847e5e3f56926.js.LICENSE.txt
nebula-dashboard/public/index.html
nebula-dashboard/public/iconfont.js
nebula-dashboard/public/9a5b6417566a7bd74c13.png
nebula-dashboard/public/58.0cefaabbe8d466f8e90f.css
nebula-dashboard/public/main.0cefaabbe8d466f8e90f.css
nebula-dashboard/public/58.a9df982efeb3a3cf1e70.js
nebula-dashboard/public/vendors.9ddf626847e5e3f56926.js
nebula-dashboard/public/c4a0877a66cf24491310.png
nebula-dashboard/public/e9a48803537f088d5e34.png
nebula-dashboard/config.yaml
nebula-dashboard/Dockerfile
nebula-dashboard/DEPLOY.md
nebula-dashboard/dashboard.service
nebula-dashboard/scripts/
nebula-dashboard/scripts/dashboard.sh
nebula-dashboard/scripts/utils.sh
[root@wc-tyn-1-0018 opt]#
4. 配置文件
进入解压缩的nebula-dashboard文件夹,并修改配置文件config.yaml。
[root@wc-tyn-1-0018 opt]# ls
nebula-dashboard nebula-dashboard-3.4.0.x86_64.tar.gz rh
[root@wc-tyn-1-0018 opt]# cd nebula-dashboard/
[root@wc-tyn-1-0018 nebula-dashboard]# ls
bin config.yaml dashboard.service DEPLOY.md docker-compose.yaml Dockerfile public scripts vendors
[root@wc-tyn-1-0018 nebula-dashboard]# vim config.yaml
[root@wc-tyn-1-0018 nebula-dashboard]#
配置文件内主要包含 4 种依赖服务的配置和集群的配置。依赖服务的说明如下。
服务名称 默认端口号 说明
nebula-http-gateway 8090 为集群服务提供 HTTP 接口,执行 nGQL 语句与 NebulaGraph 进行交互。
nebula-stats-exporter 9200 收集集群的性能指标,包括服务 IP 地址、版本和监控指标(例如查询数量、查询延迟、心跳延迟 等)。
node-exporter 9100 收集集群中机器的资源信息,包括 CPU、内存、负载、磁盘和流量。
prometheus 9090 存储监控数据的时间序列数据库。
配置文件说明如下。
port: 7003 # Web 服务端口。
gateway:
ip: hostIP # 部署 Dashboard 的机器 IP。
port: 8090
https: false # 是否为 HTTPS 端口。
runmode: dev # 程序运行模式,包括 dev、test、prod。一般用于区分不同运行环境。
stats-exporter:
ip: hostIP # 部署 Dashboard 的机器 IP。
nebulaPort: 9200
https: false # 是否为 HTTPS 端口。
node-exporter:
- ip: nebulaHostIP_1 # 部署 NebulaGraph 的机器 IP。
port: 9100
https: false # 是否为 HTTPS 端口。
# - ip: nebulaHostIP_2
# port: 9100
# https: false
prometheus:
ip: hostIP # 部署 Dashboard 的机器 IP。
prometheusPort: 9090
https: false # 是否为 HTTPS 端口。
scrape_interval: 5s # 收集监控数据的间隔时间。默认为 1 分钟。
evaluation_interval: 5s # 告警规则扫描时间间隔。默认为 1 分钟。
# 集群节点信息
nebula-cluster:
name: 'default' # 集群名称
metad:
- name: metad0
endpointIP: nebulaMetadIP # 部署 Meta 服务的机器 IP。
port: 9559
endpointPort: 19559
# - name: metad1
# endpointIP: nebulaMetadIP
# port: 9559
# endpointPort: 19559
graphd:
- name: graphd0
endpointIP: GraphdIP # 部署 Graph 服务的机器 IP。
port: 9669
endpointPort: 19669
# - name: graphd1
# endpointIP: GraphdIP
# port: 9669
# endpointPort: 19669
storaged:
- name: storaged0
endpointIP: StoragedIP # 部署 Storage 服务的机器 IP。
port: 9779
endpointPort: 19779
# - name: storaged1
# endpointIP: StoragedIP
# port: 9779
# endpointPort: 19779
5. 启动服务
执行./dashboard.service start all一键启动服务。
[root@wc-tyn-1-0018 nebula-dashboard]# ls
bin config.yaml dashboard.service DEPLOY.md docker-compose.yaml Dockerfile public scripts vendors
[root@wc-tyn-1-0018 nebula-dashboard]# ./dashboard.service start all
[INFO] Starting prometheus
[INFO] DONE
[INFO] Starting http-gateway
[INFO] DONE
[INFO] Starting nebula-dashboard-server
[INFO] DONE
[INFO] Starting nebula-stats-exporter
[INFO] DONE
[root@wc-tyn-1-0018 nebula-dashboard]#
三、Dashboard 配置连接
1. 登录Dashboard
打开浏览器,输入Dashboard的访问地址,即可看到登录界面。输入正确的用户名和密码(默认为admin/nebula),即可登录Dashboard。
127.0.0.1:7003/login
2. 查看集群概况
登录后,我们首先看到的是集群概况页面。该页面展示了集群的整体健康状况,包括节点数量、服务状态、资源使用情况等关键信息。通过这些信息,我们可以快速了解集群的运行状态。
3. 监控节点状态
在“节点”选项卡下,我们可以查看集群中各个节点的详细信息。包括节点的IP地址、CPU使用率、内存占用、磁盘IO等。通过点击节点名称,我们还可以进入该节点的详细监控页面,查看更详细的信息。
4. 监控服务状态
在“服务”选项卡下,我们可以查看NebulaGraph各个服务的运行状态。包括Graph服务、Meta服务和Storage服务的启动情况、连接数、请求数等。通过这些信息,我们可以及时发现服务异常,并进行相应的处理。
5. 查看信息集群信息总览
四、日常运维与故障排查
借助 Dashboard 提供的各种图表和报表,管理员能够更加便捷地执行日常运维工作。例如:
性能调优 :通过观察各节点的负载分布,识别出瓶颈所在,并据此采取相应的优化策略,如增加硬件资源或调整查询语句。
容量规划 :基于历史趋势预测未来的存储需求,提前做好扩容准备。
安全审计 :审查访问日志,确保只有授权用户才能执行敏感操作。
当遇到突发故障时,Dashboard 的实时告警功能可以帮助我们迅速定位问题源头,并采取紧急应对措施。此外,结合内置的日志分析工具,还可以进一步挖掘深层次的原因,避免类似事件再次发生。
五、总结
NebulaGraph Dashboard作为一款强大的集群监控工具,为我们提供了直观、便捷的监控体验。通过本文的实战操作,我们了解了如何登录Dashboard、查看集群概况、监控节点状态和服务状态等关键操作。同时,结合NebulaGraph的命令行工具和Studio可视化界面,我们还可以编写自定义的监控脚本来满足更复杂的监控需求。相信在未来的使用中,Dashboard将成为我们保障NebulaGraph集群稳定运行的重要工具之一。
仅供参考。如果有更多具体的问题或需要进一步的帮助,请随时告知。
参考资料:
NebulaGraph Dashboard(社区版) 官方文档
社区论坛
轻松上手:通过 RPM 包快速部署 NebulaGraph