python抓取skywalking中超過2s的告警接口
優(yōu)化慢接口
因技術(shù)需要優(yōu)化慢接口,故需抓取響應(yīng)超過2s的接口。skywalking中有超過2s的所有接口的報(bào)警,代碼對最近一周接口響應(yīng)超過2s的接口地址進(jìn)行了提取。

skywalking中想要抓取的超過2s的告警接口
# -*- coding: utf-8 -*-
'''
@Time : 2023/4/20 16:50
@Author : Celeste
@File : zq_req_2.py
'''
import csv
import urllib
import requests
import json
import re
# 爬取連接2s以上接口的方法,分頁處理
def get_alarm_api(current_page):
headers = {"Content-Type": "application/json"}
post_param = {
"query": "query queryAlarms($keyword: String, $scope: Scope, $duration:Duration!, $tags:[AlarmTag], $paging: Pagination!) {\n getAlarm(keyword: $keyword, scope: $scope, duration: $duration, paging: $paging, tags: $tags) {\n items: msgs {\n key: id\n message\n startTime\n scope\n tags {\n key\n value\n }\n events {\n uuid\n source {\n service serviceInstance endpoint\n }\n name\n type\n message\n parameters {\n key\n value\n }\n startTime\n endTime\n }\n }\n }}",
"variables": {
"duration": {
"start": "2023-04-20 09",
"end": "2023-04-25 09",
"step": "HOUR"
},
"paging": {
"pageNum": current_page,
"pageSize": 2
}
}
}
return_data = requests.post("http://××.×.×.××:8080/graphql",headers=headers,data=json.dumps(post_param))
resp_data = return_data.json()
return resp_data
# 對爬取的返回?cái)?shù)據(jù)處理,提取出接口信息
def get_api_list(resp_data):
api_list = []
for mesg in resp_data['data']['getAlarm']['items']:
# c = mesg['message'].split()
# c1 = c.split()
#matches = re.findall(r'(?<!\w)(\/\w+)', c)
for m_api in mesg['message'].split():
#print(j)
if m_api.startswith("/"):
api_list.append(m_api)
page_api = set(api_list)
return page_api獲取返回中所有的message中的接口地址列表且去重


上一步是一頁的所有接口地址去重;
取出數(shù)據(jù)中的接口地址去重
此步是取出30頁數(shù)據(jù)中的接口地址,再對所有接口地址進(jìn)行去重
# 挨個(gè)調(diào)用方法
def page_api_list():
pageNum = 30
page_apis = []
for current_page in range(1, pageNum + 1):
resp_data = get_alarm_api(current_page)
page_api = get_api_list(resp_data)
page_apis += page_api
qc_page_apis = set(page_apis)
return qc_page_apis
# #將爬出的數(shù)據(jù)寫入到csv表格
def scrpe_csv(qc_page_apis):
# 寫模式打開csv文件
with open('api.csv','a+',encoding="utf-8") as csv_obj:
# 寫入一行標(biāo)題
csv.writer(csv_obj).writerow(["api地址"])
#
for i in list(qc_page_apis):
# 逐個(gè)寫入api信息
print("==========正在寫入api為: %s,的信息=======" %(i))
csv.writer(csv_obj).writerow(i.split()) #csv.writer(csv_obj).writerow([i])
print("finshed")
if __name__ == '__main__':
data = page_api_list()
scrpe_csv(data)抓取到最近一周,響應(yīng)時(shí)間超過2s的所有接口

以上就是python抓取skywalking中超過2s的告警接口的詳細(xì)內(nèi)容,更多關(guān)于python抓取skywalking告警接口的資料請關(guān)注腳本之家其它相關(guān)文章!
- Skywalking-agent調(diào)試說明以trace-ignore為例
- SpringCloudGateway使用Skywalking時(shí)日志打印traceId解析
- Apache?SkyWalking?修復(fù)TTL?timer?失效bug詳解
- Apache?SkyWalking?監(jiān)控?MySQL?Server?實(shí)戰(zhàn)解析
- 全鏈路監(jiān)控平臺Pinpoint?SkyWalking?Zipkin選型對比
- skywalking源碼解析javaAgent工具ByteBuddy應(yīng)用
- skywalking分布式服務(wù)調(diào)用鏈路追蹤APM應(yīng)用監(jiān)控
- skywalking容器化部署docker鏡像構(gòu)建k8s從測試到可用
- 解析Arthas協(xié)助排查線上skywalking不可用問題
相關(guān)文章
Python自動化辦公之Word文檔的創(chuàng)建與生成
這篇文章主要為大家詳細(xì)介紹了如何通過python腳本來自動生成一個(gè)?word文檔,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-05-05
解決pandas展示數(shù)據(jù)輸出時(shí)列名不能對齊的問題
今天小編就為大家分享一篇解決pandas展示數(shù)據(jù)輸出時(shí)列名不能對齊的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
分析Python感知線程狀態(tài)的解決方案之Event與信號量
本文主要介紹了如何感知線程狀態(tài)、如何停止一個(gè)線程、線程之間的Event用法2021-06-06
Python pytest 框架通關(guān)指南:自動化測試不再難
文章介紹了pytest一個(gè)高效的Python測試框架,其優(yōu)點(diǎn)包括簡單易用、強(qiáng)大的斷言庫、支持參數(shù)化測試和豐富的插件生態(tài)系統(tǒng),解釋了安裝、用例運(yùn)行規(guī)則、命令參數(shù)、配置文件、前后置操作、斷言以及參數(shù)化等內(nèi)容,通過示例代碼展示了其用法和優(yōu)勢,感興趣的朋友跟隨小編一起看看吧2026-03-03
Python使用sql語句對mysql數(shù)據(jù)庫多條件模糊查詢的思路詳解
這篇文章主要介紹了Python使用sql語句對mysql數(shù)據(jù)庫多條件模糊查詢的思路詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04

