欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python抓取skywalking中超過2s的告警接口

 更新時(shí)間:2023年06月16日 14:10:49   作者:軟件開發(fā)技術(shù)修煉  
這篇文章主要為大家介紹了python抓取skywalking中超過2s的告警接口詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

優(yōu)化慢接口

因技術(shù)需要優(yōu)化慢接口,故需抓取響應(yīng)超過2s的接口。skywalking中有超過2s的所有接口的報(bào)警,代碼對(duì)最近一周接口響應(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以上接口的方法,分頁(yè)處理
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
# 對(duì)爬取的返回?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中的接口地址列表且去重

上一步是一頁(yè)的所有接口地址去重;

取出數(shù)據(jù)中的接口地址去重

此步是取出30頁(yè)數(shù)據(jù)中的接口地址,再對(duì)所有接口地址進(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告警接口的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論