跳转至

部署 Dashboard

安装部署 Dashboard 涉及 5 种服务,本文将详细介绍如何通过 TAR 包安装部署。下载和编译 NebulaGraph Dashboard 的最新源码,请参见 GitHub nebula dashboard 页面的说明。

前提条件

在部署 Dashboard 之前,用户需要确认以下信息:

  • 确保以下端口未被使用:

    • 9200
    • 9100
    • 9090
    • 8090
    • 7003
  • 使用的 Linux 发行版为 CentOS ,安装有版本为 v10.12.0 以上的 Node.js,安装有版本为 1.13 及以上的 Go。

下载 Dashboard

在每台机器上下载 TAR 包,建议选择最新版本。

Dashboard 安装包 NebulaGraph 版本
nebula-dashboard-3.1.0.x86_64.tar.gz 2.5.x ~ 3.1.x

目录结构说明

执行命令tar -xvf nebula-dashboard-3.1.0.x86_64.tar.gz解压缩,目录nebula-dashboard/vendors内一共有 4 个子目录,说明如下。

目录名称 说明 端口号
node-exporter 收集集群中机器的资源信息,包括 CPU、内存、负载、磁盘和流量。 9100
nebula-stats-exporter 收集集群的性能指标,包括服务 IP 地址、版本和监控指标(例如查询数量、查询延迟、心跳延迟等)。 9200
prometheus 存储监控数据的时间序列数据库。 9090
nebula-http-gateway 为集群服务提供 HTTP 接口,执行 nGQL 语句与 NebulaGraph 数据库进行交互。 8090

方式一 通过 Docker Compose 部署 Dashboard 依赖服务

支持通过 Docker Compose 启动 Dashboard 所需的所有服务。

前提条件

确保用户在部署 Dashboard 的机器上已经安装了 Docker。

操作步骤

  1. 在 NebulaGraph 集群的每台机器上的nebula-dashboard安装目录下,进入vendors/node-exporter,然后分别执行以下命令启动node-exporter

    nohup ./node-exporter --web.listen-address=":9100" &
    

    Note

    用户可根据需要,决定是否在集群中的每台机器上启动node-exporter服务。

  2. 在部署 Dashboard 机器上的nebula-dashboard安装目录下,部署 Dashboard 所需的服务。

    1. 进入vendors/nebula-stats-exporter目录,通过修改config.yaml文件,配置 NebulaGraph 集群所有服务的 HTTP 端口及所在机器的 IP。示例如下:

      clusters:
        - name: nebula
          instances:
            - name: metad0
              endpointIP: 192.168.8.157
              endpointPort: 19559
              componentType: metad
            - name: metad1
              endpointIP: 192.168.8.155
              endpointPort: 19559
              componentType: metad
            - name: metad2
              endpointIP: 192.168.8.154
              endpointPort: 19559
              componentType: metad
            - name: graphd0
              endpointIP: 192.168.8.157
              endpointPort: 19669
              componentType: graphd
            - name: graphd1
              endpointIP: 192.168.8.155
              endpointPort: 19669
              componentType: graphd
            - name: graphd2
              endpointIP: 192.168.8.154
              endpointPort: 19669
              componentType: graphd
            - name: storaged0
              endpointIP: 192.168.8.157
              endpointPort: 19779
              componentType: storaged
            - name: storaged1
              endpointIP: 192.168.8.155
              endpointPort: 19779
              componentType: storaged
            - name: storaged2
              endpointIP: 192.168.8.154
              endpointPort: 19779
              componentType: storaged
      
    2. 进入vendors/prometheus目录,通过修改prometheus.yaml文件,配置node-exporternebula-stats-exporter服务的地址和端口。示例如下:

      global:
        scrape_interval:     5s  # 收集监控数据的间隔时间。默认为 1 分钟。
        evaluation_interval: 5s  # 告警规则扫描时间间隔。默认为 1 分钟。
      scrape_configs:
        - job_name: 'node-exporter'
          static_configs:
            - targets: [
                '192.168.8.154:9100',
                '192.168.8.155:9100',
                '192.168.8.157:9100'  # node-exporter 服务的 IP 地址和端口。
              ]
        - job_name: 'nebula-stats-exporter'
          static_configs:
            - targets: [
              'nebula-stats-exporter:9200',  # nebula-stats-exporter 服务的地址和端口。
              ]
      
    3. 在目录nebula-dashboard内,修改文件config.json,配置代理信息。

      {
        "port": 7003,
        "proxy":{
          "gateway":{
            "target": "nebula-http-gateway:8090"  # nebula-http-gateway 服务的地址和端口号。
          },
          "prometheus":{
            "target": "prometheus:9090"    # Prometheus 服务的地址和端口号。
          },
          "graph":{
            "target": "graphd:19669"    # 用于获取 Graph 服务的运行配置。
          },
          "storage":{
            "target": "graphd:19779"   # 用于获取 Storage 服务的运行配置。
          }        
        },
        "nebulaServer": {
          "ip": "192.168.8.131",           # 任一 Graph 服务的机器 IP。
          "port": 9669                     # Graph 服务的端口号。
        }
      }
      
  3. 在任意目录下执行以下命令创建供 Dashboard 中所有服务相互访问的网络。

    docker network create nebula-net
    
  4. 在目录nebula-dashboard内,执行以下命令启动 Dashboard 的依赖服务。

    docker-compose -f docker-compose.yaml up -d
    

    关于docker-compose.yaml文件中参数的解释,参见服务配置

  5. 执行docker ps命令查看服务的状态,然后分别进行以下操作检查服务是否都正常启动。

    • 在浏览器中输入<IP>:9200检查nebula-stats-exporter服务是否正常启动。
    • 在浏览器中输入<IP>:9100检查node-exporter服务是否正常启动。
    • 在浏览器中输入<IP>:9090检查prometheus服务是否正常启动。
    • 在浏览器中输入<IP>:8090检查nebula-http-gateway服务是否正常启动。
    • 在浏览器中输入<IP>:7003检查dashboard服务是否正常启动。

方式二 逐一部署 Dashboard 依赖服务

部署node-exporter服务

Caution

集群中的每个机器都需要部署node-exporter服务。

在目录node-exporter内执行如下命令启动服务:

$ nohup ./node-exporter --web.listen-address=":9100" &

服务启动后,可以在浏览器中输入<IP>:9100检查服务是否正常启动。

部署nebula-stats-exporter服务

Caution

只需要在nebula-dashboard服务所在机器部署nebula-stats-exporter服务。

  1. 在目录nebula-stats-exporter内修改文件config.yaml,配置所有服务的 HTTP 端口,示例如下:

    clusters:
      - name: nebula
        instances:
          - name: metad0
            endpointIP: 192.168.8.157
            endpointPort: 19559
            componentType: metad
          - name: metad1
            endpointIP: 192.168.8.155
            endpointPort: 19559
            componentType: metad
          - name: metad2
            endpointIP: 192.168.8.154
            endpointPort: 19559
            componentType: metad
          - name: graphd0
            endpointIP: 192.168.8.157
            endpointPort: 19669
            componentType: graphd
          - name: graphd1
            endpointIP: 192.168.8.155
            endpointPort: 19669
            componentType: graphd
          - name: graphd2
            endpointIP: 192.168.8.154
            endpointPort: 19669
            componentType: graphd
          - name: storaged0
            endpointIP: 192.168.8.157
            endpointPort: 19779
            componentType: storaged
          - name: storaged1
            endpointIP: 192.168.8.155
            endpointPort: 19779
            componentType: storaged
          - name: storaged2
            endpointIP: 192.168.8.154
            endpointPort: 19779
            componentType: storaged
    
  2. 执行如下命令启动服务:

    $ nohup  ./nebula-stats-exporter --listen-address=":9200" --bare-metal --bare-metal-config=./config.yaml &
    

服务启动后,可以在浏览器中输入<IP>:9200检查服务是否正常启动。

部署prometheus服务

Caution

只需要在nebula-dashboard服务所在机器部署prometheus服务。

  1. 在目录prometheus内修改文件prometheus.yaml,配置node-exporter服务和nebula-stats-exporter服务的 IP 地址和端口,示例如下:

    global:
      scrape_interval:     5s
      evaluation_interval: 5s
    scrape_configs:
      - job_name: 'nebula-stats-exporter'
        static_configs:
          - targets: [
              '192.168.xx.100:9200'  #  nebula-stats-exporter 服务的 IP 地址和端口。
            ]
      - job_name: 'node-exporter'
        static_configs:
          - targets: [
              '192.168.xx.100:9100',  #  node-exporter 服务的 IP 地址和端口。
              '192.168.xx.101:9100'
            ]
    
    • scrape_interval:收集监控数据的间隔时间。默认为 1 分钟。
    • evaluation_interval:告警规则扫描时间间隔。默认为 1 分钟。
  2. 执行如下命令启动服务:

    $ nohup ./prometheus --config.file=./prometheus.yaml &
    

服务启动后,可以在浏览器中输入<IP>:9090检查服务是否正常启动。

部署nebula-http-gateway服务

Caution

只需要在nebula-dashboard服务所在机器部署nebula-http-gateway服务。

在目录nebula-http-gateway内执行如下命令启动服务:

$ nohup ./nebula-httpd &

服务启动后,可以在浏览器中输入<IP>:8090检查服务是否正常启动。

部署dashboard服务

  1. 在目录nebula-dashboard内修改文件config.json,配置代理信息,示例如下:

      port: 7003
      proxy:
        gateway:
          target: "127.0.0.1:8090"  //  nebula-http-gateway 服务的 IP 和端口号。
        prometheus:
          target: "127.0.0.1:9090"  // Prometheus 服务的 IP 和端口号。
        graph:
          target: "127.0.0.1:19669"    // 用于获取 Graph 服务的运行配置。
        storage:
          target: "127.0.0.1:19779"   // 用于获取 Storage 服务的运行配置。      
        nebulaServer:
          ip: "192.168.8.143"  // 任一 Graph 服务的机器 IP。
          port: 9669 // Graph 服务的端口号。
      ...
    
  2. 在目录nebula-dashboard内执行如下命令启动服务:

    $ nohup ./dashboard &
    

服务启动后,可以在浏览器中输入<IP>:7003检查服务是否正常启动。

停止 Dashboard

  • 对于通过 Docker Compose 启动的 Dashboard,执行docker-compose stop命令停止。
  • 对于通过逐一部署方式启动的 Dashboard,执行kill <pid>的方式停止,示例如下:

    $ kill $(lsof -t -i :9100) # 停止 node-exporter 服务
    $ kill $(lsof -t -i :9200) # 停止 nebula-stats-exporter 服务
    $ kill $(lsof -t -i :9090) # 停止 prometheus 服务
    $ kill $(lsof -t -i :8090) # 停止 nebula-http-gateway 服务
    $ kill $(lsof -t -i :7003) # 停止 dashboard 服务
    

后续操作

连接 Dashboard


最后更新: February 23, 2023