运维无忧 NebulaGraph Dashboard 监控 可视化利器

作者: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等技术平台,经常发布原创技术文章,并多次被首页推荐,积极与业界同仁分享我的运维经验和独到见解。

image

前言

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

4 个赞

马老师真的高产,太强了~respect