共计 3636 个字符,预计需要花费 10 分钟才能阅读完成。
简介:封神 - 外围性能 | 钉钉告警 + 数据网关
1. 开发背景
1.1 用户痛点
①租户侧运维能力弱
问题:租户侧,客户没有有效途径,及时地获取实例级的状态、性能、容量的数据。
现状:每日固定工夫,驻场须要人肉收集数据,钉钉定时推送给客户。
②问题排查效率低
问题:利用业务有问题,云平台产品失常,客户并不认可,须要帮忙客户解决问题。
现状:发现利用实例呈现性能、容量被打满的问题,这个排查过程往往简短,效率很低。
③监控能力缺失
问题:云平台监控不全,容量治理、性能治理等报表能力缺失。
现状:驻场须要通过大量人肉巡检,或者编写脚本。
④监控 形式时效性低
问题:业务侧总会优先于利用与云平台感知到故障,运维十分被动。
现状:客户发现问题,告诉利用,利用查看后,再溯源到云平台,排查链路串行并且低效。
1.2 解决方案
①保障业务稳固
通过云产品的服务能力的变动状况及业务仿真模型的建设,提前预知客户业务衰弱度,低于基线后便会触发告警。
②SLA 化展现
触发阈值主动报警,量化产品健康状况。
2. 开发设计
2.1 零碎架构
图 1:零碎架构图
封神零碎架构如图 1 所示,分为 CLIENT 与 SERVER 端两大模块。
- CLINET 端:部署在经典网铜雀容器内,通过定时工作管制去采集云内各产品数据。
-
SERVER 端:部署在 VPC 内 ECS 上,零碎框架为 FLASK,分为数据处理与数据存储两大部分。
①数据处理是指通过提供 API 承受 CLIENT 的数据并进行入库操作以及数据的前端展现。
②数据存储是指借助阿里云 RDS 数据库,对数据进行长久化操作作。
2.2 业务架构
图 2:业务架构图
封神业务架构如如 2 所示,分为五大板块。
- 姜子牙:租户侧告警,次要包含 ECS、RDS 等云产品实例性能以及业务相干告警。
- 申公豹:运维侧告警,次要包含云产品衰弱状态、水位容量等相干告警。
- 雷震子:硬件告警,次要包含坏盘,物理机带外等告警。
- 比 干:平安告警,次要来自云盾相干安全类告警。
- 杨 戬:故障告警,次要对各产品数据进行 SLA 算法解决,设置 P0,P1 等级故障阈值。
3. 钉钉告警
3.1 告警分类
机器人创立形式可参考文后材料 [1] 理解详情。
姜子牙
申公豹
雷震子
比 干
杨 戬
3.2 告警展现
图 3:姜子牙
图 4:申公豹
图 5:雷震子
图 6:比干
图 7:杨戬 -1
图 7:杨戬 -2
图 7:杨戬 -3
图 7:杨戬 -4
4. 数据网关
数据网关分为两大模块:获取数据、接收数据。
-
获取数据分为告警数据、全量数据、性能数据。
①告警数据:别离对应钉钉机器人推送的告警信息,封装成相应的数据格式,以 API 接口模式对外提供数据。
②全量数据:数据库源表数据,不做任何加工解决,以 API 接口模式对外提供数据,可操作性较高。
③性能数据:产品性能数据会定期存储到时序数据库,存储工夫长,可查问历史性能数据。 - 接收数据:提供对外 API 接管客户自定义监控数据,封装成 MARKDOWN 格局,实时进行钉钉告警。
4.1 获取数据
4.1.1 告警数据
4.1.1.1 申请接口
申请形式:POST 申请
URL 地址:http://{ip}:{port}/api/v1/sea…
ip: 封神 ecs\_ip
port:9170
PARAM:参数列表可查看文后材料 [2] 理解详情。
4.1.1.2 DEMO
import sys
import requests
url = "http://{ip}:{port}/api/v1/search/monitor/"
data = {"product":"MQ", "title":"积压告警", "stime":"2020-01-04 00:00:00", "etime":"2020-01-04 00:01:00"}
res = requests.post(url=url, json=data)
print res.content
curl -H "Content-Type:application/json"
-X POST -d '{"type":"ALL"}' http://{ip}:{port}/api/v1/search/monitor/
4.1.1.3 数据返回
①以后存在告警
{“code”:0, “data”:[{“info”:”0.0.0.0,ecs,95% \n 0.0.0.1,ecs,95% “, “product”:”ECS”, “title”:” 性能告警 ”, “level”:” 告警 ”, “robot”:” 姜子牙 ”, “monitor\_time”:”2020-01-14 00:00:00″, “columns”:”IP, 产品, 值 ”}]}
②以后未存在告警数据(告警恢复正常)
{“code”:0, “data”:[{“info”:””, “product”:”ECS”, “title”:” 性能告警 ”, “level”:” 告警 ”, “robot”:” 姜子牙 ”, “monitor\_time”:”2020-01-14 00:00:00″, “columns”:”IP, 产品, 值 ”}]}
③未查问到数据:
{“code”:0, “data”:[]}
④查问异样:
{“code”:500, “data”:” 异样信息 ”}
4.1.2 全量数据
4.1.2.1 申请接口
申请形式:POST 申请
URL 地址:http://{ip}:{port}/api/v1/sea…
ip: 封神 ecs\_ip
port:9170
PARAM:参数列表可查看文后材料 [2] 理解详情。
4.1.2.2 DEMO
import sys
import requests
url = "http://{ip}:{port}/api/v1/search/data/"
data = {"product":"MQ", "title":"TIME", "stime":"2020-01-04 00:00:00", "etime":"2020-01-04 00:01:00"}
res = requests.post(url=url, json=data)
print res.content
4.1.2.3 数据返回
4.1.3 性能数据
4.1.3.1 申请接口
申请形式:POST 申请
URL 地址:http://{ip}:{port}/api/v1/inf…\_query/
ip: 封神 ecs\_ip
port:9170
PARAM:参数为 INFLUXDB SQL
4.1.3.2 DEMO
import sys
import requests
url = "http://{ip}:{port}/api/v1/influxdb_query/"
data = {"sql":"infudb sql"}
res = requests.post(url, data)
print res.content
4.1.3.3 数据返回
4.2 接收数据
4.2.1 申请接口
申请形式:POST 申请
URL 地址:http://{ip}:{port}/api/v1/ins…
ip: 封神 ecs\_ip
port:9170
PARAM:
4.2.2 DEMO
import sys
import requests
url = "http://172.0.0.1:9170/api/v1/insert/third/"
data = {"title":"ecs 性能监控", "level":"预警", "source":"云监控", "product":"ecs", "msg":"ip:10.0.0.1 cpu:98% ip:127.0.0.1 mem:99%", "robot":"姜子牙", "submitor":"高德臣", "monitor_time":"2021-03-10 16:00:00", "details":"兄弟 关注下"}
res = requests.post(url=url, json=data)
print res.text
4.2.3 告警展现
图 8:告警展现图
参考文章
[1] 封神榜部署前置查看:https://yuque.antfin-inc.com/docs/share/d3a743db-af85-47d2-89c5-4f22eb1693c5?
[2] 获取封神数据 - 三方 API:https://yuque.antfin-inc.com/docs/share/2037fbb2-35fa-42ad-8476-ec7502e9ed33?#
咱们是阿里云智能寰球技术服务 -SRE 团队,咱们致力成为一个以技术为根底、面向服务、保障业务零碎高可用的工程师团队;提供业余、体系化的 SRE 服务,帮忙广大客户更好地应用云、基于云构建更加稳固牢靠的业务零碎,晋升业务稳定性。咱们冀望可能分享更多帮忙企业客户上云、用好云,让客户云上业务运行更加稳固牢靠的技术,您可用钉钉扫描下方二维码,退出阿里云 SRE 技术学院钉钉圈子,和更多云上人交换对于云平台的那些事。
版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。