8. 监控说明

XuperChain 系统集成了Prometheus开源监控框架,用户可以通过Prometheus+Grafana构建自己应用的监控系统,并且用户还可以根据自己的需求定义自己的监控采集项。下面会介绍目前 XuperChain 默认采集的监控项,并指导用户如何搭建自己本地的 XuperChain 开源监控系统。

8.1. XuperChain 监控项

目前支持的监控项如下图:

../_images/metrics.jpg
每个大项说明如下:
  • xuperos_common_call_method_seconds:调用方法监控,可以查看到每个函数的数据;

  • xuperos_contract_invoke:合约调用相关监控项;

  • xuperos_ledger:账本相关数据监控项;

  • xuperos_network:网络相关监控项。

8.2. XuperChain 监控系统搭建

8.2.1. 搭建网络

搭建网络,节点 env.yaml 配置中打开 metricSwitch ,如下所示:

# Metric switch
metricSwitch: false

同时在 server.yaml 中可以设置端口,如果是多个节点,每个节点都需要设置:

metricPort: 37201

8.2.2. 使用Prometheus查看监控

xbench 项目中,有可以直接使用的 配置文件 ,同时也可以参考下面的示例自己搭建。

  1. prometheus 安装教程:

    1. https://prometheus.io/docs/introduction/first_steps/

  2. 配置prometheus 设置endpoint服务:

    1. 修改 prometheus.yml 文件,添加如下配置,每个 target 对应 xchain 节点的 server.yaml 中的 metricPort 端口:

    scrape_configs:
    - job_name: 'xchain'
      scrape_interval: 3s
      static_configs:
        - targets:
           - '127.0.0.1:37201'
           - '127.0.0.1:37202'
           - '127.0.0.1:37203'
    
  3. 启动prometheus:

    nohup ./prometheus --config.file=prometheus.yml &
    
  4. 查看对应监控项,以下是三个节点监控示例:

    1. http://localhost:9090/graph

    2. xuperos_common_call_method_seconds_bucket,在页面下面可以看到每个节点以及方法的详细信息:

    ../_images/monitor_1_call_method_seconds_bucket.jpg
    1. ledger_confirmedTx_total:

    ../_images/monitor_2_ledger_confirmedTx_total.jpg
    1. network_msg_received_total

    ../_images/monitor_3_network_msg_received_total.jpg

8.2.3. 使用Grafana查看监控

因为Prometheus的界面看起来非常简单,我们还可以通过Grafana这个非常强大也是最常用的监控展示框架。

使用文档参看: https://grafana.com/grafana/download

xbench 项目中,同样提供了可以直接使用的 grafana 模板,要和上面的 prometheus 配置文件一起使用。

8.2.4. 使用接口查看监控

Prometheus提供了一种功能查询语言PromQL(Prometheus查询语言),它允许用户实时选择和聚合时间序列数据。同时为了方便外部系统调用,还提供了HTTP API能力。

详情请参考: https://prometheus.io/docs/prometheus/latest/querying/api/

  1. grafana 安装教程:https://grafana.com/grafana/download?pg=get&plcmt=selfmanaged-box1-cta1 下载安装包后,解压后可直接启动

    nohup ./bin/grafana-server &
    

    之后访问 http://localhost:3000/ 即可。

  2. 导入数据源,在 grafana 页面导入数据源并选择 Prometheus:

    ../_images/monitor_4_grafana_data_source.jpg
  3. 导入 grafana 模板,在页面上创建新的 dashboard,然后导入 xbench 下的 模板

    ../_images/monitor_5_grafana_settings_json.jpg
  4. 成功后便可以看到如下内容:

    ../_images/monitor_6_grafana_dashboard.jpg