Skip to content

如何实现告警监控

HaojunRen edited this page May 31, 2024 · 3 revisions

全链路蓝绿灰度实施过程中,使用者需要快速判断蓝绿灰度是否已经生效,可以通过

  • Debug开关开启,通过控制台输出去判断相关蓝绿灰度Header是否传递,是否相同
  • 依托监控调用链中间件,通过埋点输出去判断相关蓝绿灰度Header是否传递,是否相同

上述方式需要人工观察和干预,并不友好,使用者也可以通过集成如下蓝绿灰度告警监控模块来实现

集成告警模块

① 网关和服务加上下面的类

@EventBus
public class MySubscriber {
    @Subscribe
    public void onAlarm(StrategyAlarmEvent strategyAlarmEvent) {
        // 在本告警中告警类型为StrategyConstant.STRATEGY_CONTEXT_ALARM的静态变量值,表示蓝绿灰度上下文告警
        String alarmType = strategyAlarmEvent.getAlarmType();

        // 通过事件总线把告警数据alarmMap存储到ElasticSearch、MessageQueue、数据库等
        Map<String, String> alarmMap = strategyAlarmEvent.getAlarmMap();
    }
}

在配置类里@Bean方式进行订阅类创建

@Bean
public MySubscriber mySubscriber() {
    return new MySubscriber();
}

并开启如下开关

# 启动和关闭告警,一旦关闭,蓝绿灰度上下文输出都将关闭。缺失则默认为false
spring.application.strategy.alarm.enabled=true

② 通过事件总线把告警数据存储到ElasticSearch、MessageQueue、数据库等

③ 根据端到端的traceId对应的蓝绿灰度Header是否传递,是否相同,判断蓝绿灰度是否成功

④ 如果不相同,结合DevOps系统发送告警邮件或者通知

⑤ 告警数据具体信息列表参考源码:

com.nepxion.discovery.plugin.strategy.monitor.DefaultStrategyAlarm

示例如下:

{trace-id=9ae10a3c0a67766e, span-id=84ed85ef34a859a9, n-d-service-group=discovery-guide-group, n-d-service-type=service, n-d-service-id=discovery-guide-service-a, n-d-service-address=192.168.31.237:3001, n-d-service-version=1.0, n-d-service-region=dev, n-d-service-env=env1, n-d-service-zone=zone1, n-d-version={"discovery-guide-service-a":"1.0", "discovery-guide-service-b":"1.0"}, class=com.nepxion.discovery.guide.service.feign.AFeignImpl, method=invoke}




2017-2050 ©Nepxion Studio Apache License

           

Total visits

讲义篇

集成篇

概念篇

实践篇

功能篇

配置篇

扩展篇

测试篇

升级篇

贡献篇

Clone this wiki locally