From 108acf1fdeab38290d1179f537a1453b255528a5 Mon Sep 17 00:00:00 2001 From: vitosotdihaet Date: Tue, 28 May 2024 22:41:52 +0300 Subject: [PATCH 1/8] Set up a metrics library --- metrics/__init__.py | 5 ++++ metrics/metrics.py | 64 +++++++++++++++++++++++++++++++++++++++++++++ setup.py | 19 ++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 metrics/__init__.py create mode 100644 metrics/metrics.py create mode 100644 setup.py diff --git a/metrics/__init__.py b/metrics/__init__.py new file mode 100644 index 0000000..69894b5 --- /dev/null +++ b/metrics/__init__.py @@ -0,0 +1,5 @@ +from .metrics import Metrics + +__all__ = [ + 'Metrics' +] \ No newline at end of file diff --git a/metrics/metrics.py b/metrics/metrics.py new file mode 100644 index 0000000..758bf39 --- /dev/null +++ b/metrics/metrics.py @@ -0,0 +1,64 @@ +import json + + +class Metrics: + PROMQL_REQUESTS = lambda target_job: [ + f'sum(rate(node_cpu_seconds_total{{mode!="idle", job="{target_job}"}}[1m]))/ \ + count(rate(node_cpu_seconds_total{{mode!="idle", job="{target_job}"}}[1m]) > bool 0.05)', + + f'1 - ((avg(avg_over_time(node_memory_MemFree_bytes{{job="{target_job}"}}[1m])) + \ + avg(avg_over_time(node_memory_Cached_bytes{{job="{target_job}"}}[1m])) + \ + avg(avg_over_time(node_memory_Buffers_bytes{{job="{target_job}"}}[1m]))) / \ + avg(avg_over_time(node_memory_MemTotal_bytes{{job="{target_job}"}}[1m])))', + + f'avg(rate(node_network_receive_bytes_total{{job="{target_job}"}}[1m])) * 8 / 1024 / 1024', + f'avg(rate(node_network_transmit_bytes_total{{job="{target_job}"}}[1m])) * 8 / 1024 / 1024', + ] + + def __init__(self, cpu_load: float, ram_load: float, net_in_load: float, net_out_load: float): + ''' + Инициализация класса + `cpu_load` - значение от 0 до 1 - процент загруженности ЦП за 1 минуту + `ram_load` - значение от 0 до 1 - процент загруженности ОЗУ за 1 минуту + `net_in_load` - значение >0 - средняя скорость входящего трафика в мбит/сек + `net_out_load` - значение >0 - средняя скорость исходящего трафика в мбит/сек + ''' + + self.cpu_load = cpu_load + self.ram_load = ram_load + self.net_in_load = net_in_load + self.net_out_load = net_out_load + + def __str__(self) -> str: + ''' + Сериализует метрики в строку + ''' + + data = { + 'cpu_load': self.cpu_load, + 'ram_load': self.ram_load, + 'net_in_load': self.net_in_load, + 'net_out_load': self.net_out_load + } + + return json.dumps(data) + +class MetricsFromStr(Metrics): + def __init__(self, string_data: str): + ''' + Инициализация класса из строки + ''' + + try: + data = json.loads(string_data) + + return super().__init__( + float(data['cpu_load']), + float(data['ram_load']), + float(data['net_in_load']), + float(data['net_out_load']), + ) + except: + return super().__init__( + 0, 0, 0, 0 + ) \ No newline at end of file diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..e270e07 --- /dev/null +++ b/setup.py @@ -0,0 +1,19 @@ +from setuptools import setup, find_packages + +setup( + name='mertics', + version='0.1.0', + packages=find_packages(), + install_requires=[], + author='BobryTeam', + author_email='sinntexxx@gmail.com', + description='Metrics data structure', + long_description=open('README.md').read(), + long_description_content_type='text/markdown', + url='https://github.com/BobryTeam/metrics', + classifiers=[ + 'Programming Language :: Python :: 3', + 'Operating System :: OS Independent', + ], + python_requires='>=3.10', +) From 3db4c75e95ebe163dbb177a6cba43fe299ea658b Mon Sep 17 00:00:00 2001 From: vitosotdihaet Date: Tue, 28 May 2024 22:44:21 +0300 Subject: [PATCH 2/8] Forgot MetricsFromStr --- metrics/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metrics/__init__.py b/metrics/__init__.py index 69894b5..b3e208d 100644 --- a/metrics/__init__.py +++ b/metrics/__init__.py @@ -1,4 +1,4 @@ -from .metrics import Metrics +from .metrics import Metrics, MetricsFromStr __all__ = [ 'Metrics' From 08acfaa21e6cbbfa0bb3f523197c1e07b424d2b4 Mon Sep 17 00:00:00 2001 From: vitosotdihaet Date: Tue, 28 May 2024 22:45:43 +0300 Subject: [PATCH 3/8] Remove useless shit from setup.py --- setup.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/setup.py b/setup.py index e270e07..17ba0c2 100644 --- a/setup.py +++ b/setup.py @@ -8,8 +8,6 @@ author='BobryTeam', author_email='sinntexxx@gmail.com', description='Metrics data structure', - long_description=open('README.md').read(), - long_description_content_type='text/markdown', url='https://github.com/BobryTeam/metrics', classifiers=[ 'Programming Language :: Python :: 3', From 97431262156da022829a1ae13e1e1d983df2ceca Mon Sep 17 00:00:00 2001 From: vitosotdihaet Date: Tue, 28 May 2024 22:50:10 +0300 Subject: [PATCH 4/8] Fix typo --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 17ba0c2..fb8a1fd 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages setup( - name='mertics', + name='metrics', version='0.1.0', packages=find_packages(), install_requires=[], From 4d4b246c7aff62c5b630f81421ab5f6c50626e0c Mon Sep 17 00:00:00 2001 From: vitosotdihaet Date: Tue, 28 May 2024 22:51:22 +0300 Subject: [PATCH 5/8] Add MetricsFromStr to __all__ --- metrics/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metrics/__init__.py b/metrics/__init__.py index b3e208d..8d8a13b 100644 --- a/metrics/__init__.py +++ b/metrics/__init__.py @@ -1,5 +1,5 @@ from .metrics import Metrics, MetricsFromStr __all__ = [ - 'Metrics' + 'Metrics', 'MetricsFromStr' ] \ No newline at end of file From bdf51c97ab9454ec8573cfc4dc26497c7eec4bd1 Mon Sep 17 00:00:00 2001 From: vitosotdihaet Date: Thu, 30 May 2024 11:27:28 +0300 Subject: [PATCH 6/8] Remove bullshit --- metrics.py | 64 ------------------------------------------------------ 1 file changed, 64 deletions(-) delete mode 100644 metrics.py diff --git a/metrics.py b/metrics.py deleted file mode 100644 index e9205f0..0000000 --- a/metrics.py +++ /dev/null @@ -1,64 +0,0 @@ -import json - - -class Metrics: - PROMQL_REQUESTS = lambda target_job: [ - f'sum(rate(node_cpu_seconds_total{{mode!="idle", job="{target_job}"}}[1m]))/ \ - count(rate(node_cpu_seconds_total{{mode!="idle", job="{target_job}"}}[1m]) > bool 0.05)', - - f'1 - ((avg(avg_over_time(node_memory_MemFree_bytes{{job="{target_job}"}}[1m])) + \ - avg(avg_over_time(node_memory_Cached_bytes{{job="{target_job}"}}[1m])) + \ - avg(avg_over_time(node_memory_Buffers_bytes{{job="{target_job}"}}[1m]))) / \ - avg(avg_over_time(node_memory_MemTotal_bytes{{job="{target_job}"}}[1m])))', - - f'avg(rate(node_network_receive_bytes_total{{job="{target_job}"}}[1m])) * 8 / 1024 / 1024', - f'avg(rate(node_network_transmit_bytes_total{{job="{target_job}"}}[1m])) * 8 / 1024 / 1024', - ] - - def __init__(self, cpu_load: float, ram_load: float, net_in_load: float, net_out_load: float): - ''' - Инициализация класса - `cpu_load` - значение от 0 до 1 - процент загруженности ЦП за 1 минуту - `ram_load` - значение от 0 до 1 - процент загруженности ОЗУ за 1 минуту - `net_in_load` - значение >0 - средняя скорость входящего трафика в мбит/сек - `net_out_load` - значение >0 - средняя скорость исходящего трафика в мбит/сек - ''' - - self.cpu_load = cpu_load - self.ram_load = ram_load - self.net_in_load = net_in_load - self.net_out_load = net_out_load - - def __str__(self) -> str: - ''' - Сериализует метрики в строку - ''' - - data = { - 'cpu_load': self.cpu_load, - 'ram_load': self.ram_load, - 'net_in_load': self.net_in_load, - 'net_out_load': self.net_out_load - } - - return json.dumps(data) - -class MetricsFromStr(Metrics): - def __init__(self, string_data: str): - ''' - Инициализация класса из строки - ''' - - try: - data = json.loads(string_data) - - return super().__init__( - float(data['cpu_load']), - float(data['ram_load']), - float(data['net_in_load']), - float(data['net_out_load']), - ) - except: - return super().__init__( - 0, 0, 0, 0 - ) From 7f64d93b562112986c133a2289e913549fa26dab Mon Sep 17 00:00:00 2001 From: vitosotdihaet Date: Thu, 30 May 2024 11:59:49 +0300 Subject: [PATCH 7/8] Update the metrics --- metrics/metrics.py | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/metrics/metrics.py b/metrics/metrics.py index 758bf39..cfc9109 100644 --- a/metrics/metrics.py +++ b/metrics/metrics.py @@ -11,23 +11,21 @@ class Metrics: avg(avg_over_time(node_memory_Buffers_bytes{{job="{target_job}"}}[1m]))) / \ avg(avg_over_time(node_memory_MemTotal_bytes{{job="{target_job}"}}[1m])))', - f'avg(rate(node_network_receive_bytes_total{{job="{target_job}"}}[1m])) * 8 / 1024 / 1024', - f'avg(rate(node_network_transmit_bytes_total{{job="{target_job}"}}[1m])) * 8 / 1024 / 1024', + f'avg(rate(node_network_receive_bytes_total{{job="{target_job}"}}[1m])) * 8 / 1024 / 1024 \ + avg(rate(node_network_transmit_bytes_total{{job="{target_job}"}}[1m])) * 8 / 1024 / 1024', ] - def __init__(self, cpu_load: float, ram_load: float, net_in_load: float, net_out_load: float): + def __init__(self, cpu_load: float, ram_load: float, net_load: float): ''' Инициализация класса `cpu_load` - значение от 0 до 1 - процент загруженности ЦП за 1 минуту `ram_load` - значение от 0 до 1 - процент загруженности ОЗУ за 1 минуту - `net_in_load` - значение >0 - средняя скорость входящего трафика в мбит/сек - `net_out_load` - значение >0 - средняя скорость исходящего трафика в мбит/сек + `net_load` - значение >0 - средняя скорость входящего и исходящего трафика в мбит/сек ''' self.cpu_load = cpu_load self.ram_load = ram_load - self.net_in_load = net_in_load - self.net_out_load = net_out_load + self.net_load = net_load def __str__(self) -> str: ''' @@ -37,8 +35,7 @@ def __str__(self) -> str: data = { 'cpu_load': self.cpu_load, 'ram_load': self.ram_load, - 'net_in_load': self.net_in_load, - 'net_out_load': self.net_out_load + 'net_load': self.net_load, } return json.dumps(data) @@ -55,10 +52,9 @@ def __init__(self, string_data: str): return super().__init__( float(data['cpu_load']), float(data['ram_load']), - float(data['net_in_load']), - float(data['net_out_load']), + float(data['net_load']), ) except: return super().__init__( - 0, 0, 0, 0 + 0, 0, 0 ) \ No newline at end of file From fe4c0d9b5e59863aee19e4cba3d166fcf0ca04a4 Mon Sep 17 00:00:00 2001 From: vitosotdihaet Date: Thu, 30 May 2024 12:00:34 +0300 Subject: [PATCH 8/8] oops --- metrics/metrics.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metrics/metrics.py b/metrics/metrics.py index cfc9109..82f2cb1 100644 --- a/metrics/metrics.py +++ b/metrics/metrics.py @@ -11,7 +11,7 @@ class Metrics: avg(avg_over_time(node_memory_Buffers_bytes{{job="{target_job}"}}[1m]))) / \ avg(avg_over_time(node_memory_MemTotal_bytes{{job="{target_job}"}}[1m])))', - f'avg(rate(node_network_receive_bytes_total{{job="{target_job}"}}[1m])) * 8 / 1024 / 1024 \ + f'avg(rate(node_network_receive_bytes_total{{job="{target_job}"}}[1m])) * 8 / 1024 / 1024 + \ avg(rate(node_network_transmit_bytes_total{{job="{target_job}"}}[1m])) * 8 / 1024 / 1024', ]