-
Notifications
You must be signed in to change notification settings - Fork 1.4k
如何实现告警监控
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
- 如何对接Foundation基础平台实施收敛集成
- 如何对接DevOps运维平台实施流量管控
- 如何部署对接DevOps运维平台的控制台
- 如何对接DevOps运维平台执行半自动化蓝绿灰度发布
- 如何使用DevOps运维平台对接的公共接口
- 如何设计全链路智能编排高级蓝绿灰度发布界面
- 如何实现Windows10下GraalVM本地镜像化
- 蓝绿灰度发布
- 流量染色
- 隔离路由
- 故障转移
- 多活单元化
- 限流熔断降级权限
- 网关动态路由
- 可观测监控
- 如何操作配置中心
- 如何理解框架开关配置
- 如何理解规则策略里内容格式配置
- 如何操作网关和服务的蓝绿灰度发布规则策略配置
- 如何操作网关动态路由规则策略配置
- 如何操作Sentinel规则策略配置
- 如何实施规则策略配置和业务配置在配置中心的合并和分离
- 如何理解自动扫描目录
- 如何自定义流量管控
- 如何自定义实现组合式的防护
- 如何自定义高级配置订阅功能
- 如何自定义订阅框架事件
- 如何自定义解决业务自身跨线程上下文切换的问题
- 如何自定义重用框架内置的Swagger模块
- 如何自定义Header全链路传递
- 如何遵循Nepxion Discovery网关标准实现对其它网关全链路流量管控的二次开发
- 如何遵循Nepxion Discovery服务标准实现对消息队列等其它中间件全链路流量管控的二次开发