import os import dynatraceAPI import logging from decouple import config import yaml import pandas as pd from dynatrace import Dynatrace import logging def getDashboardsWithViewCount(DT_CLIENT, METRIC_SELECTOR, RESOLUTION, FROM_DATE, TO_DATE): metrics = DT_CLIENT.metrics.query(METRIC_SELECTOR, RESOLUTION, FROM_DATE, TO_DATE) return metrics def getDashboards(DT_CLIENT): dashboards = DT_CLIENT.dashboards.list(owner=None, tags=None) return dashboards if __name__ == "__main__": logging.basicConfig(level=logging.WARNING, format='%(levelname)s: %(message)s') with open(os.path.basename("./environment.yaml")) as 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, 10*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)