Monitor插件

说明

  • monitor插件是网关用来监控自身运行状态(JVM相关),请求的响应迟延,QPSTPS等相关metrics

技术方案

  • 流程图 Monitor插件 - 图1

  • 异步或者同步的方式,在 Apache ShenYu 网关里面进行 metrics 埋点。

  • prometheus 服务端通过 http 请求来拉取 metrics,再使用 Grafana 展示。

插件设置

  • shenyu-admin--> 基础配置 —> 插件管理-> monitor ,设置为开启。

  • monitor 插件中新增以下配置:

  1. {"metricsName":"prometheus","host":"localhost","port":"9190","async":"true"}
  2. # port : 为暴露给 prometheus服务来拉取的端口
  3. # host : 不填写则为 Apache ShenYu 网关的host.
  4. # async :"true" 为异步埋点, false 为同步埋点
  • 如果用户不使用,则在 shenyu-admin 后台把此插件停用。

Monitor插件 - 图2

插件使用

  • 在网关的 pom.xml 文件中添加 monitor 的依赖。
  1. <!-- apache shenyu monitor plugin starter-->
  2. <dependency>
  3. <groupId>org.apache.shenyu</groupId>
  4. <artifactId>shenyu-spring-boot-starter-plugin-monitor</artifactId>
  5. <version>${project.version}</version>
  6. </dependency>
  7. <!-- apache shenyu monitor plugin end-->
  • 选择器和规则配置,请参考: 选择器和规则管理
  • 只有当匹配的url,才会进行url请求埋点。

metrics信息

  • 所有的JVM,线程,内存,等相关信息都会埋点,可以在 Grafana 面板中,新增一个 JVM 模块,则会完全展示 具体请看:https://github.com/prometheus/jmx_exporter

  • 另外还有如下自定义的 metrics

名称类型标签名称说明
request_totalCounter收集ShenYu网关所有的请求
http_request_totalCounterpath,type收集monitor插件匹配的请求

收集 metrics

用户需部署Prometheus 服务来采集

  • 选择对应环境的 下载地址安装

  • 修改配置文件:prometheus.yml

    1. scrape_configs:
    2. # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
    3. - job_name: 'prometheus'
    4. # metrics_path defaults to '/metrics'
    5. # scheme defaults to 'http'.
    6. static_configs:
    7. - targets: ['localhost:9190']

    Copy

注: job_namemonitor插件配置的metricsName相对应

  • 配置完成之后 window 下可以直接双击 prometheus.exe 启动即可,默认启动端口为 9090 ,可通过http://localhost:9090/ 验证是否成功

面板展示

推荐使用 Grafana,用户可以自定义查询来个性化显示面板盘。

下面介绍 Grafana 部署(windows版)

  • 安装 Grafana

下载地址 解压进入 bin 目录然后双击 grafana-server.exe 运行 访问 http://localhost:3000/?orgId=1 admin/admin 验证是否成功

  • 配置 Prometheus 数据源

Monitor插件 - 图3

  • 配置 JVM 面板

点击Create - Import,输入 dashboardsid(推荐8563

Monitor插件 - 图4

最终JVM监控面板效果如下:

Monitor插件 - 图5

  • 配置自定义metric面板request_totalhttp_request_total

点击 Create - Import 输入dashboards面板json配置

最终自定义 Http 请求监控面板效果如下:

Monitor插件 - 图6