监控优化

CPU使用率
{"Namespace":"acs_ecs_dashboard","Dimensions":"{\"instanceId\":\"i-9vc05ajzjfyhyxnm62m9\"}","MetricName":"CPUUtilization","StartTime":1675817179610,"EndTime":1675838779610}
内存使用率
{"Namespace":"acs_ecs_dashboard","Dimensions":"{\"instanceId\":\"i-9vc05ajzjfyhyxnm62m9\"}","MetricName":"memory_usedutilization","StartTime":1675817179610,"EndTime":1675838779610}


RDS

CPU使用率
{"Namespace":"acs_rds_dashboard","Dimensions":"{\"instanceId\":\"rm-9vc00mdcn74c5642a\"}","MetricName":"CpuUsage","StartTime":1675817755442,"EndTime":1675839355442}
内存使用率
{"Namespace":"acs_rds_dashboard","Dimensions":"{\"instanceId\":\"rm-9vc00mdcn74c5642a\"}","MetricName":"MemoryUsage","StartTime":1675817755442,"EndTime":1675839355442}

 


前台监控指标数据趋势查询,提供新接口直接查询云厂api,解决资源多场景的采集同步不及时问题
1.查询监控数据,前端入参instanceId, long startTime, long endTime
2.查询云厂商监控数据,需要参数
String namespace, String metricName, String instanceKey, String instanceId, long startTime, long endTime, String period, String regionId, String ak, String sk, String authUrl

实现步骤:
1)根据资源id调用cmdb资源查询接口,region取globalRegion字段(参数8)
globalRegion:"cn-chengdu"
globalCloudAccountId:"406444886911041536"
cmdbTemplateCode:"CEC-ECS-ALI"(云贵templateCode:"CEC-CSR-ECS-ALS")
2)通过云账号id(globalCloudAccountId)查询云账号信息,取ak(参数9)和sk(参数10),以及cloudType和authUrl(参数11)
"cloudType":"TENCENT"
3)根据cloudType和资源类型(cmdbTemplateCode,以前版本如云贵是templateCode)查询metric_config,遍历得到namespace(参数1),metricName(参数2),instanceKey(参数3),以及最小周期originalPeroid(根据开始和结束时间,计算查询周期period,即参数7)
4)组织参数(参数4、5和6为入参)调用云厂监控数据查询接口,返回统一json结构


一.单维度的,比如ecs,监控采集不再调用monitor接口查询指标,直接查metric_config表获取instanceKey组织参数调用云商接口查指标数据,减少频繁调用monitor查monitor_metric表和维度表。缓存metric_config和租户对应的指标开关数据,减少查询sql。
二.云贵项目资源多,不同步指标数据,直接调云商接口查询。告警阈值规则直接调用云商接口创建,只同步告警数据。
三.云账号查询,云管加缓存
/api/v1/accounts/batch
/api/v1/apps/{tenantId}/accounts
这两个接口请求频繁,导致神通数据库cpu高
解决办法:
1.在云管服务里加map缓存:1)租户id对应的云账号id列表;2)云账号id对应云账号信息
接口实现直接从map里组织返回数据。
2.云账号新增的时候清空缓存重新加载。
四.MetricDimension的metric_id加索引
五.in语句里id太多,索引失效问题。比如MetricDimensionService里List<MetricDimension> metricDimensionList = this.dao.findAllByMetricIds(metricIdList);需要改成100条循环查询。
神通数据库SHOW INDEX;MAX_OR_EXPR_USING_MULTI_INDEX 为300表示不超过300个id的in语句才走索引。

posted on 2023-05-29 09:50  yaoyu  阅读(11)  评论(0编辑  收藏  举报

导航