implemented fetching via dynatrace client api
parent
273372db7a
commit
1d11624e3a
|
|
@ -5,39 +5,67 @@ euprod-coco:
|
||||||
- env-token-name: "EUPROD_TOKEN_VAR"
|
- env-token-name: "EUPROD_TOKEN_VAR"
|
||||||
- jenkins: "https://jaws.bmwgroup.net/opapm/"
|
- jenkins: "https://jaws.bmwgroup.net/opapm/"
|
||||||
- type: "coco"
|
- type: "coco"
|
||||||
|
- metricSelector: "builtin:dashboards.viewCount:splitBy(id):sort(value(auto,ascending))"
|
||||||
|
- resolution: "1M"
|
||||||
|
- fromDate: "now-6M"
|
||||||
|
- toDate: "now"
|
||||||
euprod-gcdm:
|
euprod-gcdm:
|
||||||
- name: "euprod"
|
- name: "euprod"
|
||||||
- env-url: "https://moh22956.live.dynatrace.com"
|
- env-url: "https://moh22956.live.dynatrace.com"
|
||||||
- env-token-name: "EUPRODSAAS_TOKEN_VAR"
|
- env-token-name: "EUPRODSAAS_TOKEN_VAR"
|
||||||
- jenkins: "https://jaws.bmwgroup.net/opapm/"
|
- jenkins: "https://jaws.bmwgroup.net/opapm/"
|
||||||
- type: "gcdm"
|
- type: "gcdm"
|
||||||
|
- metricSelector: "builtin:dashboards.viewCount:splitBy(id):sort(value(auto,ascending))"
|
||||||
|
- resolution: "1M"
|
||||||
|
- fromDate: "now-6M"
|
||||||
|
- toDate: "now"
|
||||||
eupreprod-coco:
|
eupreprod-coco:
|
||||||
- name: "eupreprod"
|
- name: "eupreprod"
|
||||||
- env-url: "https://qqk70169.live.dynatrace.com"
|
- env-url: "https://qqk70169.live.dynatrace.com"
|
||||||
- env-token-name: "EUPREPROD_TOKEN_VAR"
|
- env-token-name: "EUPREPROD_TOKEN_VAR"
|
||||||
- jenkins: "https://jaws.bmwgroup.net/opapm/"
|
- jenkins: "https://jaws.bmwgroup.net/opapm/"
|
||||||
- type: "coco"
|
- type: "coco"
|
||||||
|
- metricSelector: "builtin:dashboards.viewCount:splitBy(id):sort(value(auto,ascending))"
|
||||||
|
- resolution: "1M"
|
||||||
|
- fromDate: "now-6M"
|
||||||
|
- toDate: "now"
|
||||||
naprod-coco:
|
naprod-coco:
|
||||||
- name: "naprod"
|
- name: "naprod"
|
||||||
- env-url: "https://wgv50241.live.dynatrace.com"
|
- env-url: "https://wgv50241.live.dynatrace.com"
|
||||||
- env-token-name: "NAPROD_TOKEN_VAR"
|
- env-token-name: "NAPROD_TOKEN_VAR"
|
||||||
- jenkins: "https://jaws.bmwgroup.net/opapm/"
|
- jenkins: "https://jaws.bmwgroup.net/opapm/"
|
||||||
- type: "coco"
|
- type: "coco"
|
||||||
|
- metricSelector: "builtin:dashboards.viewCount:splitBy(id):sort(value(auto,ascending))"
|
||||||
|
- resolution: "1M"
|
||||||
|
- fromDate: "now-6M"
|
||||||
|
- toDate: "now"
|
||||||
napreprod-coco:
|
napreprod-coco:
|
||||||
- name: "napreprod"
|
- name: "napreprod"
|
||||||
- env-url: "https://onb44935.live.dynatrace.com"
|
- env-url: "https://onb44935.live.dynatrace.com"
|
||||||
- env-token-name: "NAPREPROD_TOKEN_VAR"
|
- env-token-name: "NAPREPROD_TOKEN_VAR"
|
||||||
- jenkins: "https://jaws.bmwgroup.net/opapm/"
|
- jenkins: "https://jaws.bmwgroup.net/opapm/"
|
||||||
- type: "coco"
|
- type: "coco"
|
||||||
|
- metricSelector: "builtin:dashboards.viewCount:splitBy(id):sort(value(auto,ascending))"
|
||||||
|
- resolution: "1M"
|
||||||
|
- fromDate: "now-6M"
|
||||||
|
- toDate: "now"
|
||||||
cnprod-coco:
|
cnprod-coco:
|
||||||
- name: "cnprod"
|
- name: "cnprod"
|
||||||
- env-url: "https://dyna-synth-cn.bmwgroup.com.cn/e/b921f1b9-c00e-4031-b9d1-f5a0d530757b"
|
- env-url: "https://dyna-synth-cn.bmwgroup.com.cn/e/b921f1b9-c00e-4031-b9d1-f5a0d530757b"
|
||||||
- env-token-name: "CNPROD_TOKEN_VAR"
|
- env-token-name: "CNPROD_TOKEN_VAR"
|
||||||
- jenkins: "https://jaws-china.bmwgroup.net/opmaas/"
|
- jenkins: "https://jaws-china.bmwgroup.net/opmaas/"
|
||||||
- type: "coco"
|
- type: "coco"
|
||||||
|
- metricSelector: "builtin:dashboards.viewCount:splitBy(id):sort(value(auto,ascending))"
|
||||||
|
- resolution: "1M"
|
||||||
|
- fromDate: "now-6M"
|
||||||
|
- toDate: "now"
|
||||||
cnpreprod-coco:
|
cnpreprod-coco:
|
||||||
- name: "cnpreprod"
|
- name: "cnpreprod"
|
||||||
- env-url: "https://dynatracemgd-tsp.bmwgroup.net/e/ab88c03b-b7fc-45f0-9115-9e9ecc0ced35"
|
- env-url: "https://dynatracemgd-tsp.bmwgroup.net/e/ab88c03b-b7fc-45f0-9115-9e9ecc0ced35"
|
||||||
- env-token-name: "CNPREPROD_TOKEN_VAR"
|
- env-token-name: "CNPREPROD_TOKEN_VAR"
|
||||||
- jenkins: "https://jaws-china.bmwgroup.net/opmaas/"
|
- jenkins: "https://jaws-china.bmwgroup.net/opmaas/"
|
||||||
- type: "coco"
|
- type: "coco"
|
||||||
|
- metricSelector: "builtin:dashboards.viewCount:splitBy(id):sort(value(auto,ascending))"
|
||||||
|
- resolution: "1M"
|
||||||
|
- fromDate: "now-6M"
|
||||||
|
- toDate: "now"
|
||||||
94
main.py
94
main.py
|
|
@ -5,71 +5,49 @@ from decouple import config
|
||||||
import yaml
|
import yaml
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from dynatrace import Dynatrace
|
from dynatrace import Dynatrace
|
||||||
from dynatrace import TOO_MANY_REQUESTS_WAIT
|
import logging
|
||||||
from dynatrace.environment_v2.tokens_api import SCOPE_METRICS_READ, SCOPE_METRICS_INGEST
|
|
||||||
|
|
||||||
def getD(DTURL, DTTOKEN, metricSelector, resolution, fromDate, toDate):
|
|
||||||
# Create a Dynatrace client
|
|
||||||
dt = Dynatrace(DTURL, DTTOKEN)
|
|
||||||
for metric in dt.metrics.query(metricSelector, resolution, fromDate, toDate):
|
|
||||||
with open('metrics.txt', 'w') as f:
|
|
||||||
f.write(str(metric))
|
|
||||||
|
|
||||||
|
|
||||||
def getDashboardsWithViewCount(DTAPIToken, DTENV, metricSelector, resolution,
|
def getDashboardsWithViewCount(DT_CLIENT, METRIC_SELECTOR, RESOLUTION,
|
||||||
fromDate, toDate):
|
FROM_DATE, TO_DATE):
|
||||||
|
metrics = DT_CLIENT.metrics.query(METRIC_SELECTOR, RESOLUTION, FROM_DATE,
|
||||||
dtclient = dynatraceAPI.Dynatrace(DTENV, DTAPIToken,
|
TO_DATE)
|
||||||
logging.Logger("ERROR"), None, None, 0,
|
return metrics
|
||||||
2 * 1000)
|
|
||||||
params = {
|
|
||||||
"metricSelector": f"{metricSelector}",
|
|
||||||
"resolution": f"{resolution}",
|
|
||||||
"fromDate": f"{fromDate}",
|
|
||||||
"toDate": f"{toDate}"
|
|
||||||
}
|
|
||||||
|
|
||||||
api_url_report = "/api/v2/metrics/query"
|
|
||||||
pages = dtclient.returnPageination(api_url_report, params, "data")
|
|
||||||
df = pd.DataFrame(pages.elements)
|
|
||||||
return df
|
|
||||||
|
|
||||||
|
|
||||||
def getDashboards(DTAPIToken, DTENV):
|
def getDashboards(DT_CLIENT):
|
||||||
|
dashboards = DT_CLIENT.dashboards.list(owner=None, tags=None)
|
||||||
|
return dashboards
|
||||||
|
|
||||||
dtclient = dynatraceAPI.Dynatrace(DTENV, DTAPIToken,
|
|
||||||
logging.Logger("ERROR"), None, None, 0,
|
|
||||||
2 * 1000)
|
|
||||||
my_params = {
|
|
||||||
"owner": "",
|
|
||||||
"tags": [],
|
|
||||||
}
|
|
||||||
|
|
||||||
api_url_report = "/api/config/v1/dashboards"
|
|
||||||
pages = dtclient.returnPageination(api_url_report, my_params, "dashboards")
|
|
||||||
df = pd.DataFrame(pages.elements)
|
|
||||||
return df
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
metricSelector = "builtin:dashboards.viewCount:splitBy(id):sort(value(auto,ascending))"
|
logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')
|
||||||
resolution = "1M"
|
|
||||||
fromDate = "now-6M"
|
|
||||||
toDate = "now"
|
|
||||||
|
|
||||||
with open(os.path.basename("./env-config.yaml")) as env_cfg:
|
with open(os.path.basename("./environment.yaml")) as env_cfg:
|
||||||
env_config = yaml.safe_load(env_cfg)
|
environment = yaml.safe_load(env_cfg)
|
||||||
|
|
||||||
|
for item, doc in environment.items():
|
||||||
|
logging.info(item, " checking token ...")
|
||||||
|
|
||||||
|
if config(dict(doc[2]).get("env-token-name"), default='') != "":
|
||||||
|
DT_URL = dict(doc[1]).get("env-url")
|
||||||
|
DT_TOKEN = config(dict(doc[2]).get("env-token-name"), default='')
|
||||||
|
METRIC_SELECTOR = dict(doc[5]).get("metricSelector")
|
||||||
|
RESOLUTION = dict(doc[6]).get("resolution")
|
||||||
|
FROM_DATE= dict(doc[7]).get("fromDate")
|
||||||
|
TO_DATE= dict(doc[8]).get("toDate")
|
||||||
|
|
||||||
|
logging.info(item, " init Dynatrace client ...")
|
||||||
|
DT_CLIENT = Dynatrace(DT_URL, DT_TOKEN, logging.Logger("ERROR"),
|
||||||
|
None, None, 0, 2*1000)
|
||||||
|
|
||||||
|
logging.info(item, " fetching all dashboards ...")
|
||||||
|
dashboards = getDashboards(DT_CLIENT)
|
||||||
|
|
||||||
|
logging.info(item, " fetching dashboards with view count that are\
|
||||||
|
older than 6 Months...")
|
||||||
|
viewcounts = getDashboardsWithViewCount(DT_CLIENT, METRIC_SELECTOR,
|
||||||
|
RESOLUTION, FROM_DATE,
|
||||||
|
TO_DATE)
|
||||||
|
|
||||||
for item, doc in env_config.items():
|
|
||||||
token = dict(doc[2])
|
|
||||||
url = dict(doc[1])
|
|
||||||
print(item, " crawling through ...")
|
|
||||||
print(item, " checking token ...")
|
|
||||||
if config(token.get("env-token-name"), default='') != "":
|
|
||||||
print(item, " fetching all dashboards ...")
|
|
||||||
DTTOKEN = config(token.get("env-token-name"), default='')
|
|
||||||
DTURL = url.get("env-url")
|
|
||||||
getDashboards(DTTOKEN, DTURL)
|
|
||||||
getDashboardsWithViewCount(DTTOKEN, DTURL, metricSelector,
|
|
||||||
resolution, fromDate, toDate)
|
|
||||||
getD(DTURL, DTTOKEN, metricSelector, resolution, fromDate, toDate)
|
|
||||||
Loading…
Reference in New Issue