Compare commits

..

2 Commits

Author SHA1 Message Date
d828afdb53 Merge pull request 'Collect time procedure improved' (#7) from dev into main
Reviewed-on: #7
2025-05-31 08:35:31 +03:00
Anry Das
11d497b4e3 Collect time procedure improved 2025-05-31 08:31:41 +03:00
3 changed files with 36 additions and 13 deletions

View File

@ -1,6 +1,6 @@
import os
APP_VERSION="2.2"
APP_VERSION="2.3"
SCRIPT_PATH = os.path.dirname(__file__)
CONFIGS_DIR = SCRIPT_PATH + "/configs"
CONFIG_FILE_NAME = CONFIGS_DIR + "/config.json"

View File

@ -122,13 +122,16 @@ class HealthData(AbstractData):
self.e_state.labels(name=name, url=url, method=method, server=self.instance_prefix)
self.set_data(is_up)
def set_data(self, is_up):
def set_data(self, is_up, working_time = None):
time_ms = get_time_millis()
self.is_up = is_up
self.e_state.labels(name=self.name, url=self.url, method=self.method, server=self.instance_prefix).state(ENUM_UP_DN_STATES[0] if is_up else ENUM_UP_DN_STATES[1])
self.set_collect_time(get_time_millis() - time_ms)
self.set_update_time()
self.print_trigger_info()
if working_time:
self.set_collect_time(working_time)
else:
self.set_collect_time(get_time_millis() - time_ms)
class RestValueData(AbstractData):
@ -153,7 +156,7 @@ class RestValueData(AbstractData):
self.g_value.labels(name=name, url=url, method=method, server=self.instance_prefix)
self.set_data(value)
def set_data(self, value):
def set_data(self, value, working_time = None):
time_ms = get_time_millis()
self.value = value
try:
@ -161,9 +164,12 @@ class RestValueData(AbstractData):
except:
self.g_value.labels(name=self.name, url=self.url, method=self.method, server=self.instance_prefix).set(0)
self.set_collect_time(get_time_millis() - time_ms)
self.set_update_time()
self.print_trigger_info()
if working_time:
self.set_collect_time(working_time)
else:
self.set_collect_time(get_time_millis() - time_ms)
class ShellValueData(AbstractData):
@ -181,7 +187,7 @@ class ShellValueData(AbstractData):
self.g_value.labels(name=name, command=command, server=self.instance_prefix)
self.set_data(value)
def set_data(self, value):
def set_data(self, value, working_time = None):
time_ms = get_time_millis()
self.value = value
try:
@ -189,9 +195,12 @@ class ShellValueData(AbstractData):
except:
self.g_value.labels(name=self.name, command=self.command, server=self.instance_prefix).set(0)
self.set_collect_time(get_time_millis() - time_ms)
self.set_update_time()
self.print_trigger_info()
if working_time:
self.set_collect_time(working_time)
else:
self.set_collect_time(get_time_millis() - time_ms)
class IcmpData(AbstractData):
@ -207,13 +216,16 @@ class IcmpData(AbstractData):
self.e_state.labels(name=name, ip=ip, server=self.instance_prefix)
self.set_data(is_up)
def set_data(self, is_up):
def set_data(self, is_up, working_time = None):
time_ms = get_time_millis()
self.is_up = is_up
self.e_state.labels(name=self.name, ip=self.ip, server=self.instance_prefix).state(ENUM_UP_DN_STATES[0] if is_up else ENUM_UP_DN_STATES[1])
self.set_collect_time(get_time_millis() - time_ms)
self.set_update_time()
self.print_trigger_info()
if working_time:
self.set_collect_time(working_time)
else:
self.set_collect_time(get_time_millis() - time_ms)
class InterfaceData(AbstractData):

View File

@ -36,6 +36,7 @@ class AbstractMetric:
def is_health_check(url, timeout, method, user, pwd, headers, callback=None):
time_ms = get_time_millis()
session = requests.Session()
if user and pwd:
session.auth = (user, pwd)
@ -48,13 +49,15 @@ def is_health_check(url, timeout, method, user, pwd, headers, callback=None):
)
result = response.status_code == 200
if callback is not None:
callback(result)
working_time = get_time_millis() - time_ms
callback(result, working_time)
else:
return result
except (requests.ConnectTimeout, requests.exceptions.ConnectionError) as e:
return False
def get_rest_value(url, timeout, method, user, pwd, headers, callback=None, result_type='single', path=''):
time_ms = get_time_millis()
session = requests.Session()
if user and pwd:
session.auth = (user, pwd)
@ -70,7 +73,8 @@ def get_rest_value(url, timeout, method, user, pwd, headers, callback=None, resu
if not result.isalnum():
result = 0
if callback is not None:
callback(result)
working_time = get_time_millis() - time_ms
callback(result, working_time)
else:
return result
except (requests.ConnectTimeout, requests.exceptions.ConnectionError) as e:
@ -98,6 +102,7 @@ def parse_response(resp, path):
return ''
def get_shell_value(command, args, callback=None):
time_ms = get_time_millis()
cmd = [command, ' '.join(str(s) for s in args)]
try:
output = subprocess.check_output(cmd)
@ -109,11 +114,13 @@ def get_shell_value(command, args, callback=None):
result = 0
if callback is not None:
callback(result)
working_time = get_time_millis() - time_ms
callback(result, working_time)
else:
return result
def is_ping(ip, count, callback=None):
time_ms = get_time_millis()
param = '-n' if platform.system().lower() == 'windows' else '-c'
command = ['ping', param, str(count), ip]
try:
@ -123,8 +130,10 @@ def is_ping(ip, count, callback=None):
'time out'.upper() not in str(output).upper())
except:
result = False
if callback is not None:
callback(result)
working_time = get_time_millis() - time_ms
callback(result, working_time)
else:
return result
@ -134,6 +143,8 @@ def get_net_iface_stat(name):
def get_next_update_time(d):
return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(d.updated_at + d.interval))
def get_time_millis():
return round(time.time() * 1000)
class DiskMetric(AbstractMetric):
def __init__(self, config):