Commit 0f33f775 authored by 胡凯旋's avatar 胡凯旋

fix bug

parent e0947312
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
import abc import abc
import math import math
import pprint import pprint
import time
import json
from prometheus_client.core import GaugeMetricFamily from prometheus_client.core import GaugeMetricFamily
...@@ -66,8 +68,12 @@ class TencentExporter(Exporter): ...@@ -66,8 +68,12 @@ class TencentExporter(Exporter):
'rds_name', 'type', 'service_provider', 'project' 'rds_name', 'type', 'service_provider', 'project'
]) ])
if len(instance_data_list) != len(self.instances):
print(time.ctime(), label, u"取得监控数据的机器数量与配置的机器数量不一致", len(instance_data_list))
pprint.pprint(instance_data_list)
for instance_data in instance_data_list: for instance_data in instance_data_list:
timestamp_value_dict = dict(zip(instance_data['Timestamps'], instance_data['Values'])) value = instance_data['Values'][-1]
instance_id = instance_data['Dimensions'][0]['Value'] instance_id = instance_data['Dimensions'][0]['Value']
instance = self.instances[instance_id] instance = self.instances[instance_id]
instance_name = instance['name'] instance_name = instance['name']
...@@ -75,9 +81,8 @@ class TencentExporter(Exporter): ...@@ -75,9 +81,8 @@ class TencentExporter(Exporter):
instance_project = instance.get('project', 'gengmei') instance_project = instance.get('project', 'gengmei')
# 当前queryname,当前rds实例的因子,若没有配置,默认为1 # 当前queryname,当前rds实例的因子,若没有配置,默认为1
rds_factor = instance.get(factor, 1) rds_factor = instance.get(factor, 1)
for value in timestamp_value_dict.values(): avg_metric_family.add_metric([instance_name, instance_type, service_provider, instance_project], value)
avg_metric_family.add_metric([instance_name, instance_type, service_provider, instance_project], value) with_factor_metric_family.add_metric(
with_factor_metric_family.add_metric(
['{}*{}'.format(instance_name,rds_factor), instance_type, service_provider, instance_project], ['{}*{}'.format(instance_name,rds_factor), instance_type, service_provider, instance_project],
value*rds_factor) value*rds_factor)
metrics_to_export.extend([avg_metric_family, with_factor_metric_family]) metrics_to_export.extend([avg_metric_family, with_factor_metric_family])
...@@ -91,7 +96,7 @@ class TencentExporter(Exporter): ...@@ -91,7 +96,7 @@ class TencentExporter(Exporter):
for instance in instance_data_list: for instance in instance_data_list:
# 腾讯云CPU利用率/内存使用率返回的是0-100(%), 转化成 0-1 # 腾讯云CPU利用率/内存使用率返回的是0-100(%), 转化成 0-1
if label in ["CPUUseRate", "MemoryUseRate"]: if label in ["CPUUseRate", "MemoryUseRate"]:
instance['Values'][:] = map(lambda v: v/100, instance['Values']) instance['Values'][:] = map(lambda v: v/100.0, instance['Values'])
class AliyunExporter(Exporter): class AliyunExporter(Exporter):
...@@ -135,7 +140,7 @@ class AliyunExporter(Exporter): ...@@ -135,7 +140,7 @@ class AliyunExporter(Exporter):
max_metric_family = GaugeMetricFamily(max_metricname, max_metric_family = GaugeMetricFamily(max_metricname,
max_metricname, labels=['rds_name', 'type', 'service_provider']) max_metricname, labels=['rds_name', 'type', 'service_provider'])
with_factor_metricname = '{}_with_factor'.format(metricname) with_factor_metricname = '{}_with_factor'.format(metricname)
with_factor_metric_family = GaugeMetricFamily(with_factor_metricname, with_factor_metric_family = GaugeMetricFamily(with_factor_metricname,
with_factor_metricname, labels=['rds_name', 'type', 'service_provider']) with_factor_metricname, labels=['rds_name', 'type', 'service_provider'])
for point in datapoints: for point in datapoints:
......
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