Apache ShenYu监控告警系统:Prometheus+Grafana

Apache ShenYu监控告警系统:Prometheus+Grafana

【免费下载链接】shenyu Apache ShenYu is a Java native API Gateway for service proxy, protocol conversion and API governance. 【免费下载链接】shenyu 项目地址: https://gitcode.com/gh_mirrors/shen/shenyu

系统架构概述

Apache ShenYu网关的监控告警系统基于InfluxDB时序数据库构建核心数据存储层,通过Prometheus+Grafana实现指标收集与可视化展示。系统采用插件化设计,通过MonitorPlugin拦截所有API请求,采集关键性能指标并存储至InfluxDB,最终通过Prometheus适配层对接Grafana实现监控面板与告警规则配置。

ShenYu监控架构

核心监控模块

1. 数据采集层

监控数据采集由两大核心组件协同完成:

  • MonitorPlugin:作为后置插件拦截请求,生成包含响应时间、状态码、调用量等指标的MonitorDO实体
  • InfluxDbService:提供时序数据写入能力,通过writeData方法将指标点(Point)持久化

关键指标定义:

// 核心监控实体定义
public class MonitorDO {
    private String host;        // 网关主机名
    private String ip;          // 网关IP地址
    private String method;      // HTTP方法
    private String module;      // 业务模块
    private String resultType;  // 调用结果状态
    private String rpcType;     // 协议类型(HTTP/Dubbo)
    private long count;         // 调用耗时(ms)
}

2. 存储配置

InfluxDB集成通过Spring Boot自动配置实现,核心配置类InfluxDbConfiguration提供数据源管理:

@Configuration
@ConditionalOnProperty(prefix = "spring.influxdb", name = "url")
public class InfluxDbConfiguration {
    @Bean
    public InfluxDBTemplate influxDBTemplate(final InfluxDBConnectionFactory connectionFactory) {
        return new InfluxDBTemplate<>(connectionFactory, new PointConverter());
    }
}

3. 数据流转流程

  1. 请求经过网关时触发MonitorPlugin
  2. 通过Disruptor高性能队列异步处理指标数据
  3. SoulDataHandler调用InfluxDB服务写入数据
  4. Prometheus通过自定义Exporter采集InfluxDB指标
  5. Grafana读取Prometheus数据源展示监控面板并触发告警

Prometheus集成方案

1. 指标暴露配置

需添加Prometheus Java客户端依赖并配置指标采集端点:

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

2. 关键监控指标

指标名称类型描述来源
soul_request_totalCounter总请求数MonitorPlugin
soul_request_latency_msHistogram请求延迟分布MonitorDO
soul_request_error_rateGauge错误率InfluxDbService

Grafana监控面板

1. 面板配置

推荐导入官方提供的ShenYu监控模板,包含以下核心视图:

  • 全局请求流量监控
  • 协议类型分布(HTTP/Dubbo)
  • 服务响应时间分位数
  • 错误码统计分析

2. 告警规则配置

针对关键指标设置告警阈值:

groups:
- name: soul_alerts
  rules:
  - alert: HighErrorRate
    expr: soul_request_error_rate > 0.05
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "网关错误率过高"
      description: "错误率持续5分钟超过5% (当前值: {{ $value }})"

部署与验证

1. 环境配置

修改application.yml启用InfluxDB存储:

spring:
  influxdb:
    url: http://influxdb:8086
    username: admin
    password: admin
    database: soul_monitor

2. 功能验证

通过InfluxDbServiceTest单元测试验证数据写入功能,或执行以下curl命令检查指标暴露端点:

curl http://localhost:9090/actuator/prometheus | grep soul_

扩展建议

  1. 指标增强:扩展MonitorDO添加JVM指标(内存/线程)
  2. 告警渠道:集成AlertManager实现邮件、钉钉等多渠道通知
  3. 历史数据:配置InfluxDB数据保留策略,实现长期趋势分析

完整监控方案实现可参考官方文档README.md及监控模块源码soul-web/src/main/java/org/dromara/soul/web/influxdb/

【免费下载链接】shenyu Apache ShenYu is a Java native API Gateway for service proxy, protocol conversion and API governance. 【免费下载链接】shenyu 项目地址: https://gitcode.com/gh_mirrors/shen/shenyu

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值