封神-核心功能 | 钉钉告警+数据网关
1. 開發(fā)背景
1.1 用戶痛點(diǎn)
①租戶側(cè)運(yùn)維能力弱
問題:租戶側(cè),客戶沒有有效途徑,及時(shí)地獲取實(shí)例級(jí)的狀態(tài)、性能、容量的數(shù)據(jù)。
現(xiàn)狀:每日固定時(shí)間,駐場(chǎng)需要人肉收集數(shù)據(jù),釘釘定時(shí)推送給客戶。
②問題排查效率低
問題:應(yīng)用業(yè)務(wù)有問題,云平臺(tái)產(chǎn)品正常,客戶并不認(rèn)可,需要幫助客戶解決問題。
現(xiàn)狀:發(fā)現(xiàn)應(yīng)用實(shí)例出現(xiàn)性能、容量被打滿的問題,這個(gè)排查過程往往冗長(zhǎng), 效率很低。
③監(jiān)控能力缺失
問題:云平臺(tái)監(jiān)控不全,容量管理、性能管理等報(bào)表能力缺失。
現(xiàn)狀:駐場(chǎng)需要通過大量人肉巡檢,或者編寫腳本。
④監(jiān)控 方式時(shí)效性低
問題:業(yè)務(wù)側(cè)總會(huì)優(yōu)先于應(yīng)用與云平臺(tái)感知到故障,運(yùn)維非常被動(dòng) 。
現(xiàn)狀:客戶發(fā)現(xiàn)問題,通知應(yīng)用,應(yīng)用檢查后,再溯源到云平臺(tái),排查鏈路串行并且低效。
1.2 解決方案
①保障業(yè)務(wù)穩(wěn)定
通過云產(chǎn)品的服務(wù)能力的變化情況及業(yè)務(wù)仿真模型的建立,提前預(yù)知客戶業(yè)務(wù)健康度,低于基線后便會(huì)觸發(fā)告警。
②SLA化展示
觸發(fā)閾值自動(dòng)報(bào)警,量化產(chǎn)品健康狀況。
2. 開發(fā)設(shè)計(jì)
2.1 系統(tǒng)架構(gòu)
圖1:系統(tǒng)架構(gòu)圖
封神系統(tǒng)架構(gòu)如圖1所示,分為CLIENT與SERVER端兩大模塊。
- CLINET端:部署在經(jīng)典網(wǎng)銅雀容器內(nèi),通過定時(shí)任務(wù)控制去采集云內(nèi)各產(chǎn)品數(shù)據(jù)。
- SERVER端:部署在VPC內(nèi)ECS上,系統(tǒng)框架為FLASK,分為數(shù)據(jù)處理與數(shù)據(jù)存儲(chǔ)兩大部分。
①數(shù)據(jù)處理是指通過提供API接受CLIENT的數(shù)據(jù)并進(jìn)行入庫(kù)操作以及數(shù)據(jù)的前端展示。
②數(shù)據(jù)存儲(chǔ)是指借助阿里云RDS數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)進(jìn)行持久化操作作。
2.2 業(yè)務(wù)架構(gòu)
圖2:業(yè)務(wù)架構(gòu)圖
封神業(yè)務(wù)架構(gòu)如如2所示,分為五大板塊。
- 姜子牙:租戶側(cè)告警,主要包括ECS、RDS等云產(chǎn)品實(shí)例性能以及業(yè)務(wù)相關(guān)告警。
- 申公豹:運(yùn)維側(cè)告警,主要包括云產(chǎn)品健康狀態(tài)、水位容量等相關(guān)告警。
- 雷震子:硬件告警,主要包括壞盤,物理機(jī)帶外等告警。
- 比 干:安全告警,主要來自云盾相關(guān)安全類告警。
- 楊 戩:故障告警,主要對(duì)各產(chǎn)品數(shù)據(jù)進(jìn)行SLA算法處理,設(shè)置P0,P1等級(jí)故障閾值。
3. 釘釘告警
3.1 告警分類
機(jī)器人創(chuàng)建方式可參考文后資料[1]了解詳情。
姜子牙
申公豹
雷震子
比 干
楊 戩
3.2 告警展示
圖3:姜子牙
圖4:申公豹
圖5:雷震子
圖6:比干
圖7:楊戩-1
圖7:楊戩-2
圖7:楊戩-3
圖7:楊戩-4
4. 數(shù)據(jù)網(wǎng)關(guān)
數(shù)據(jù)網(wǎng)關(guān)分為兩大模塊:獲取數(shù)據(jù)、接收數(shù)據(jù)。
- 獲取數(shù)據(jù)分為告警數(shù)據(jù)、全量數(shù)據(jù)、性能數(shù)據(jù)。
①告警數(shù)據(jù):分別對(duì)應(yīng)釘釘機(jī)器人推送的告警信息,封裝成相應(yīng)的數(shù)據(jù)格式,以API接口形式對(duì)外提供數(shù)據(jù)。
②全量數(shù)據(jù):數(shù)據(jù)庫(kù)源表數(shù)據(jù),不做任何加工處理,以API接口形式對(duì)外提供數(shù)據(jù),可操作性較高。
③性能數(shù)據(jù):產(chǎn)品性能數(shù)據(jù)會(huì)定期存儲(chǔ)到時(shí)序數(shù)據(jù)庫(kù),存儲(chǔ)時(shí)間長(zhǎng),可查詢歷史性能數(shù)據(jù)。 - 接收數(shù)據(jù):提供對(duì)外API接收客戶自定義監(jiān)控?cái)?shù)據(jù),封裝成MARKDOWN格式,實(shí)時(shí)進(jìn)行釘釘告警。
4.1 獲取數(shù)據(jù)
4.1.1 告警數(shù)據(jù)
4.1.1.1 請(qǐng)求接口
請(qǐng)求方式:POST請(qǐng)求
URL地址: http://{ip}:{port}/api/v1/search/monitor
ip:封神ecs_ip
port:9170
PARAM:參數(shù)列表可查看文后資料[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 數(shù)據(jù)返回
①當(dāng)前存在告警
{"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,產(chǎn)品,值"}]}
②當(dāng)前未存在告警數(shù)據(jù)(告警恢復(fù)正常)
{"code":0, "data":[{"info":"", "product":"ECS", "title":"性能告警", "level":"告警", "robot":"姜子牙", "monitor_time":"2020-01-14 00:00:00", "columns":"IP,產(chǎn)品,值"}]}
③未查詢到數(shù)據(jù):
{"code":0, "data":[]}
④查詢異常:
{"code":500, "data":"異常信息"}
4.1.2 全量數(shù)據(jù)
4.1.2.1 請(qǐng)求接口
請(qǐng)求方式:POST請(qǐng)求
URL地址: http://{ip}:{port}/api/v1/search/data/
ip:封神ecs_ip
port:9170
PARAM:參數(shù)列表可查看文后資料[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 數(shù)據(jù)返回
4.1.3 性能數(shù)據(jù)
4.1.3.1 請(qǐng)求接口
請(qǐng)求方式:POST請(qǐng)求
URL地址: http://{ip}:{port}/api/v1/influxdb_query/
ip:封神ecs_ip
port:9170
PARAM:參數(shù)為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 數(shù)據(jù)返回
4.2 接收數(shù)據(jù)
4.2.1 請(qǐng)求接口
請(qǐng)求方式:POST請(qǐng)求
URL地址:http://{ip}:{port}/api/v1/insert/third
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性能監(jiān)控", "level":"預(yù)警", "source":"云監(jiān)控", "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":"兄弟 關(guān)注下"}
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] 獲取封神數(shù)據(jù)-三方API:https://yuque.antfin-inc.com/docs/share/2037fbb2-35fa-42ad-8476-ec7502e9ed33?#
我們是阿里云智能全球技術(shù)服務(wù)-SRE團(tuán)隊(duì),我們致力成為一個(gè)以技術(shù)為基礎(chǔ)、面向服務(wù)、保障業(yè)務(wù)系統(tǒng)高可用的工程師團(tuán)隊(duì);提供專業(yè)、體系化的SRE服務(wù),幫助廣大客戶更好地使用云、基于云構(gòu)建更加穩(wěn)定可靠的業(yè)務(wù)系統(tǒng),提升業(yè)務(wù)穩(wěn)定性。我們期望能夠分享更多幫助企業(yè)客戶上云、用好云,讓客戶云上業(yè)務(wù)運(yùn)行更加穩(wěn)定可靠的技術(shù),您可用釘釘掃描下方二維碼,加入阿里云SRE技術(shù)學(xué)院釘釘圈子,和更多云上人交流關(guān)于云平臺(tái)的那些事。
原文鏈接:https://developer.aliyun.com/article/784431?
版權(quán)聲明:本文內(nèi)容由阿里云實(shí)名注冊(cè)用戶自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。具體規(guī)則請(qǐng)查看《阿里云開發(fā)者社區(qū)用戶服務(wù)協(xié)議》和《阿里云開發(fā)者社區(qū)知識(shí)產(chǎn)權(quán)保護(hù)指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫侵權(quán)投訴表單進(jìn)行舉報(bào),一經(jīng)查實(shí),本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。總結(jié)
以上是生活随笔為你收集整理的封神-核心功能 | 钉钉告警+数据网关的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里云 AI 编辑部获 CCBN 创新奖
- 下一篇: 云原生数据库 2.0:一站式全链路数据管