服务可用性设计

一、统计指标
根据普罗米修斯Prometheus中的up指标,按照分钟记录服务不可用的记录数
up指标:up{application=“agr-ecos.admin”,instance=“30.79.8.41:43950”,job=“agr-ecos”} 当实例下线时为0,实例上线时为1
1、判断服务不可用逻辑
服务在某个分钟里,所有实例的up指标全为0,如果满足条件则记录入库(为了可以删除,存储至Pg库)
2、统计逻辑
a)定时任务查询前1h中up为0的指标,若存在记录,则遍历up为0的服务,根据服务名查询对应的事件段的up数据
b)按天统计不可用持续时间和当天不可用分钟数,若服务不可用跨天则需要在第二天统计时,更新不可用持续时间和结束时间
c)删除数据时需要重新统计
二、表结构设计
1、服务不可用明细表: tb_service_disabled_record

field type comment
service_name varchar 服务名
disable_time timestamp 不可用出现时间(分钟)
instance_num int 实例数量

2、服务不可用时间统计表:tb_service_disabled_duration

field type comment
service_name varchar 服务名
disable_start_time timestamp 不可用开始时间
disable_duration int 不可用持续时间
disable_end_time timestamp 不可用结束时间

有跨天不可用时,则在第二天更新disable_duration 和disable_start_time
3、服务不可用按天统计表:tb_service_disabled_daily_statistic

field type comment
service_name varchar 服务名
disable_minutes int 不可用时间
statistic_day date 日期

三、接口设计
1、按周,月,年统计服务可用率,不可用分钟数,最长不可用时间
2、最近一周topK不可用服务列表
3、最近一个月topK不可用服务列表
4、各个系统不可用服服务列表