Commit 3706c5f4 authored by 胡凯旋's avatar 胡凯旋

log and fix

parent 0f33f775
# coding=utf-8 # coding=utf-8
import abc import abc
import math import math
import pprint
import time import time
import json import json
import logging
from prometheus_client.core import GaugeMetricFamily from prometheus_client.core import GaugeMetricFamily
...@@ -44,10 +44,10 @@ class TencentExporter(Exporter): ...@@ -44,10 +44,10 @@ class TencentExporter(Exporter):
instance_to_get = instance_id_list[batch_size*i : batch_size*(i+1)] instance_to_get = instance_id_list[batch_size*i : batch_size*(i+1)]
try: try:
res = self.monitor.get_cdb_metric(instance_to_get, label, self.data_interval) res = self.monitor.get_cdb_metric(instance_to_get, label, self.data_interval)
# print(res) # logging.info(res)
data_from_tencent[label].extend(res['DataPoints']) data_from_tencent[label].extend(res['DataPoints'])
except Exception as e: except Exception as e:
print(e) logging.error(e)
return data_from_tencent return data_from_tencent
def _transfer_to_prometheus_format(self, data): def _transfer_to_prometheus_format(self, data):
...@@ -69,22 +69,28 @@ class TencentExporter(Exporter): ...@@ -69,22 +69,28 @@ class TencentExporter(Exporter):
]) ])
if len(instance_data_list) != len(self.instances): if len(instance_data_list) != len(self.instances):
print(time.ctime(), label, u"取得监控数据的机器数量与配置的机器数量不一致", len(instance_data_list)) logging.warn("[label:{label}] 取得监控数据的机器数量{data_num}与配置的机器数量{ins_num}不一致".format(
pprint.pprint(instance_data_list) label=label,
data_num=len(instance_data_list),
ins_num=len(self.instances)))
for instance_data in instance_data_list: for instance_data in instance_data_list:
value = instance_data['Values'][-1] try:
instance_id = instance_data['Dimensions'][0]['Value'] value = instance_data['Values'][-1]
instance = self.instances[instance_id] instance_id = instance_data['Dimensions'][0]['Value']
instance_name = instance['name'] instance = self.instances[instance_id]
instance_type = instance.get('type', 'master') instance_name = instance['name']
instance_project = instance.get('project', 'gengmei') instance_type = instance.get('type', 'master')
# 当前queryname,当前rds实例的因子,若没有配置,默认为1 instance_project = instance.get('project', 'gengmei')
rds_factor = instance.get(factor, 1) # 当前queryname,当前rds实例的因子,若没有配置,默认为1
avg_metric_family.add_metric([instance_name, instance_type, service_provider, instance_project], value) rds_factor = instance.get(factor, 1)
with_factor_metric_family.add_metric( avg_metric_family.add_metric([instance_name, instance_type, service_provider, instance_project], value)
['{}*{}'.format(instance_name,rds_factor), instance_type, service_provider, instance_project], with_factor_metric_family.add_metric(
value*rds_factor) ['{}*{}'.format(instance_name,rds_factor), instance_type, service_provider, instance_project],
value*rds_factor)
except Exception as e:
logging.exception(e)
logging.error(data)
metrics_to_export.extend([avg_metric_family, with_factor_metric_family]) metrics_to_export.extend([avg_metric_family, with_factor_metric_family])
return metrics_to_export return metrics_to_export
...@@ -122,7 +128,7 @@ class AliyunExporter(Exporter): ...@@ -122,7 +128,7 @@ class AliyunExporter(Exporter):
res = self.monitor.get_rds_metric(instance_id_list, label) res = self.monitor.get_rds_metric(instance_id_list, label)
metrics_from_aliyun[label].extend(res['Datapoints']) metrics_from_aliyun[label].extend(res['Datapoints'])
except Exception as e: except Exception as e:
print(e) logging.info(e)
return metrics_from_aliyun return metrics_from_aliyun
...@@ -163,7 +169,7 @@ class AliyunExporter(Exporter): ...@@ -163,7 +169,7 @@ class AliyunExporter(Exporter):
if __name__ == "__main__": if __name__ == "__main__":
tencent_exporter = TencentExporter() tencent_exporter = TencentExporter()
data = tencent_exporter.export_prometheus_data() data = tencent_exporter.export_prometheus_data()
# # print(data) # # logging.info(data)
# aliyun_exporter = AliyunExporter() # aliyun_exporter = AliyunExporter()
# data = aliyun_exporter._fetch_monitor_data() # data = aliyun_exporter._fetch_monitor_data()
# print(data) # logging.info(data)
...@@ -3,6 +3,7 @@ import time ...@@ -3,6 +3,7 @@ import time
import json import json
import random import random
import math import math
import logging
import yaml import yaml
from prometheus_client import start_http_server from prometheus_client import start_http_server
...@@ -18,13 +19,19 @@ class RDSCollector(object): ...@@ -18,13 +19,19 @@ class RDSCollector(object):
] ]
def collect(self): def collect(self):
logging.info('='*50)
metrics = [] metrics = []
for exporter in self.exporter_list: for exporter in self.exporter_list:
metrics.extend(exporter.export_prometheus_data()) metrics.extend(exporter.export_prometheus_data())
logging.info('='*50)
for m in metrics: for m in metrics:
yield m yield m
def main(): def main():
logging.basicConfig(format='%(asctime)s %(message)s')
logging.getLogger().setLevel(logging.INFO)
logging.info('gm-mysql-exporter started')
REGISTRY.register(RDSCollector()) REGISTRY.register(RDSCollector())
start_http_server(7086) start_http_server(7086)
while True: while True:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment