Ir para conteúdo
Fórum Script Brasil

taysa.dantas

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre taysa.dantas

taysa.dantas's Achievements

0

Reputação

  1. Olá pessoal! Eu sou especialista em Datadog e não sou dev, então preciso de uma ajuda em criar um script. Eu estou fazendo um script para pegar uso de licenças do Datadog (https://docs.datadoghq.com/api/latest/usage-metering/#get-hourly-usage-by-product-family) O resultado da API que peguei desse link acima é esse aqui: { "data": [ { "id": "6685f58b79fde3817a95b8238638ebf3b93092eab931f2e4c27de60276b85543", "type": "usage_timeseries", "attributes": { "product_family": "rum", "org_name": "SEB", "public_id": "b7b3ca9e-0449-11ed-aa8b-da7ad0900002", "region": "us", "timestamp": "2023-08-01T00:00:00+00:00", "measurements": [ { "usage_type": "browser_rum_units", "value": 12 }, { "usage_type": "mobile_rum_units", "value": null }, { "usage_type": "rum_units", "value": 12 } ] } }, { "id": "e99e489388121b41b31d1ae85d9e076ae583cdbb09969edf68527477f7175779", "type": "usage_timeseries", "attributes": { "product_family": "rum", "org_name": "SEB", "public_id": "b7b3ca9e-0449-11ed-aa8b-da7ad0900002", "region": "us", "timestamp": "2023-08-01T01:00:00+00:00", "measurements": [ { "usage_type": "browser_rum_units", "value": 9 }, { "usage_type": "mobile_rum_units", "value": null }, { "usage_type": "rum_units", "value": 8 } ] } } ] } Eu consegui montar o seguinte script para correlacionar o nome da licença (usage_type) com o valor (value) usado em cada horário (timestamp). import pandas as pd import requests import json headers = { 'Accept': 'application/json;datetime-format=rfc339', 'DD_API_KEY': 'xxxxxxxxxxx', 'DD-APPLICATION-KEY': 'xxxxxxxxxx', } params = { 'filter[timestamp][start]': '2023-06-01T00:00:00+00:00', 'filter[timestamp][end]': '2023-09-01T00:00:00+00:00', } resp = requests.get('https://api.datadoghq.com/api/v2/usage/hourly_usage?filter[product_families]=rum', headers=headers, params=params) data = resp.json() data_list = [] for item in data["data"]: timestamp = item["attributes"]["timestamp"] measurements = item["attributes"]["measurements"] measurement_dict = {"-Date": pd.to_datetime(timestamp).strftime("%d/%m/%Y %H:%M:%S")} for measurement in measurements: usage_type = measurement["usage_type"] value = measurement["value"] measurement_dict[usage_type] = value data_list.append(measurement_dict) df = pd.DataFrame(data_list) print(df) Porém, a Datadog tem uma limitação de 700 linhas, então não pega dados maiores de 1 mês (eu preciso do ano inteiro). Quando o resultado dessa API é maior que 700 linhas, é retornado "next_record_id" no final da página: { "data": [ { "id": "a9e9b3d1688e0ac3e3673e2cc17ee441d85d417b4d851518e59144265b8aadf9", "type": "usage_timeseries", "attributes": { "product_family": "rum", "org_name": "SEB", "public_id": "b7b3ca9e-0449-11ed-aa8b-da7ad0900002", "region": "us", "timestamp": "2023-01-01T00:00:00+00:00", "measurements": [ { "usage_type": "browser_rum_units", "value": 16 }, { "usage_type": "mobile_rum_units", "value": null }, { "usage_type": "rum_units", "value": 10 } ] } } ], "meta": { "pagination": { "next_record_id": "h16750512006f13bbfc4376c743828aeb52a5dbff51-0" } } } Então eu tenho que rodar a API de novo com esse ID para ter a continuação. (No script que criei teria que adicionar no final do endereço da requests.get da API "https://api.datadoghq.com/api/v2/usage/hourly_usage?filter[product_families]=rum&page[next_record_id]=h169336800005cd546b5f16f2368b47b53a17e9be7b-0"). Como eu preciso dos dados do ano inteiro, podem imaginar quantas vezes eu tenho que rodar isso para pegar todos os dados (e cada vez é uma ID diferente) Então eu preciso que o script rode esse endereço da request uma vez "pura", detecte se tem o "next_record_id" no final do resultado. Se tiver, ele pega esse ID e roda a API de novo dessa vez com o "next_record_id" no final (que nem mostrei no link acima). Se o resultado tiver outro ID, ele pega esse ID e roda de novo com esse novo ID e assim por diante, até quando rodar e não tiver mais a opção do "next_record_id" (isso quer dizer que não tem mais dados para mostrar e chegou no final). O script que mandei acima pega os dados e coloca bonitinho numa tabela, porém não sei como fazer pra ele capturar o ID automaticamente, rodar de novo com ess ID e o resultado adicionar nessa tabela. Como falei, não entendo muito disso, então empaquei nessa parte. Alguém consegue me ajudar? (Desculpa se ficou meio difícil de entender, esta difícil até de explicar porque é meio complicado, mas podem me perguntar se tiverem duvidas)
×
×
  • Criar Novo...