# encoding=UTF-8
import logging
import sys
sys.path.append(".")
import Collector
import logging
import logging.handlers
import datetime
import os
import json
class emailMonitor_Mtrs(Collector.Collector):
collect_datas = []
_app_list = []
def __init__(self):
self.setMetricsKey("emailMonitor")
self.__init_collect_datas()
def __init_collect_datas(self):
self.collect_datas = [
{
‘showDetails‘: ‘false‘,
‘emailSendTimeCostAvg‘: 0,
‘emailSendTimeCostMax‘: 6000,
‘emailServerApiTimeCostAvg‘: 3000,
‘emailSendSucceedCount‘: 0,
‘emailSendFailedCount‘: 0,
‘unavailableServerNumber‘: 0,
‘tenantId‘: ‘‘
}
]
def collect(self, process_filter):
self.execute("curl -k http://sgbeta.owsgo.com:%s/heartbeat.jsp?monitorNames=emailMonitor" % self.app)
try:
result_json_str = self.parse(r‘\s*(\{[\s\S]*\})\s*‘)
result_dict = json.loads(result_json_str)
emailMonitorResultCode = int(result_dict[‘monitorResultMap‘][‘emailMonitor‘][‘resultCode‘])
except Exception, ex:
logging.exception(ex)
try:
detailResult = result_dict[‘monitorResultMap‘][‘emailMonitor‘][‘detailResult‘]
emailSendTimeCostMax = int(detailResult[‘emailSendTimeCostMax‘])
except Exception, ex:
logging.exception(ex)
try:
timeCostToWriteESMax = int(detailResult[‘timeCostToWriteESMax‘])
except Exception, ex:
logging.exception(ex)
locals_dict = locals()
for each_data in self.collect_datas:
name = each_data["name"]
if locals_dict.has_key(name):
each_data["total_value"] += locals_dict[name]
each_data["total_count"] += 1
else:
each_data["total_value"] += each_data["exception_value"]
each_data["total_count"] += 1
if __name__ == "__main__":
monitor = emailMonitor_Mtrs()
monitor.collect("")
print monitor.collect_datas
# encoding=UTF-8
#name:liveQueryMonitor_Mtrs.py
import sys
import json
import logging
sys.path.append(".")
import Collector
class LiveQueryMonitor_Mtrs(Collector.Collector):
def __init__(self):
self.setMetricsKey("LiveQueryMonitor")
self.__init_collect_datas()
#指令执行的超时时间,默认为15秒
def getTimeout(self):
return 30
def __init_collect_datas(self):
self.collect_datas = [
{
‘unit‘: ‘Count‘,
‘total_value‘: 0,
‘total_count‘: 0,
‘exception_value‘: 10000,
‘divide_value‘: 1,
‘name‘: ‘topicMessageReceiveDelayMax‘
},{
‘unit‘: ‘Count‘,
‘total_value‘: 0,
‘total_count‘: 0,
‘exception_value‘: 10000,
‘divide_value‘: 1,
‘name‘: ‘liveDataPushDelayMax‘
}
]
# 指令执行的超时时间
def getTimeout(self):
return 20
def collect(self, process_filter):
# LiveQueryMonitor
try:
self.execute("curl -k http://127.0.0.1:%s/livequery/heartbeat.jsp?monitorNames=LiveQueryMonitor" % self.tomcat_port)
result_json_str = self.parse(r‘\s*(\{[\s\S]*\})\s*‘)
result_dict = json.loads(result_json_str)
except Exception, ex:
logging.exception(ex)
# 从binlogreader发送Topic消息到消息接收延迟(liveTable收到jms相对发的时延)
try:
LiveQueryDetailResult = result_dict[‘monitorResultMap‘][‘LiveQueryMonitor‘][‘detailResult‘]
topicMessageReceiveDelayMax = int(LiveQueryDetailResult[‘topicMessageReceiveDelayMax‘])
except Exception, ex:
logging.exception(ex)
# JMS消息收到到准备推送的延迟(向前台推送的相对收到jms的时延)
try:
liveDataPushDelayMax = int(LiveQueryDetailResult[‘liveDataPushDelayMax‘])
except Exception, ex:
logging.exception(ex)
locals_dict = locals()
for each_data in self.collect_datas:
name = each_data["name"]
if locals_dict.has_key(name):
each_data["total_value"] += locals_dict[name]
each_data["total_count"] += 1
else:
each_data["total_value"] += each_data["exception_value"]
each_data["total_count"] += 1
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
monitor = CanalMonitor_Mtrs()
monitor.collect("")
print monitor.collect_datas