From 0af90b2baa9e941bbe6b9256848cd0c8bbb277e8 Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Sun, 12 Sep 2021 18:16:43 +0200 Subject: [PATCH] update project --- agent_based/checkpoint_asg_smo_counters.py | 205 ++++++------- checkpoint_asg_smo_counters.mkp | Bin 2558 -> 3373 bytes packages/checkpoint_asg_smo_counters | 7 +- .../metrics/checkpoint_asg_smo_counters.py | 288 ++++++++++++++++++ 4 files changed, 389 insertions(+), 111 deletions(-) create mode 100644 web/plugins/metrics/checkpoint_asg_smo_counters.py diff --git a/agent_based/checkpoint_asg_smo_counters.py b/agent_based/checkpoint_asg_smo_counters.py index f67256f..f35d377 100644 --- a/agent_based/checkpoint_asg_smo_counters.py +++ b/agent_based/checkpoint_asg_smo_counters.py @@ -10,7 +10,7 @@ # Monitor Check Point Maestro SMO SGM Counters # # 2021-09-10: rewritten for CMK 2.0 -# +# 2021-09-11: added metrics file # # sample snmpwalk # .1.3.6.1.4.1.2620.1.48.20.1.0 = STRING: "111802" @@ -35,12 +35,12 @@ # .1.3.6.1.4.1.2620.1.48.20.20.0 = STRING: "0" # .1.3.6.1.4.1.2620.1.48.20.21.0 = STRING: "N/A" # -# sample info -# [[u'111802', u'0', u'84', u'91', u'N/A', u'0', u'0', u'9', u'79', u'1', u'0', u'0', u'0', u'1', u'0', u'7', u'0', u'0', u'0', u'0', u'N/A']] +# sample string_table +# [['111802', '0', '84', '91', 'N/A', '0', '0', '9', '79', '1', '0', '0', '0', '1', '0', '7', '0', '0', '0', '0', 'N/A']] # -import time + from dataclasses import dataclass -from typing import List, Dict, NamedTuple, Optional +from typing import Dict from cmk.base.plugins.agent_based.agent_based_api.v1 import ( register, @@ -53,8 +53,6 @@ from cmk.base.plugins.agent_based.agent_based_api.v1 import ( startswith, any_of, equals, - check_levels, - render, ) from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import ( DiscoveryResult, @@ -63,7 +61,15 @@ from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import ( ) -def parse_checkpoint_asg_smo_counters(string_table: StringTable) -> Dict[str, Dict[str, int]]: +@dataclass +class CheckpointAsgSmoCounters: + counters: Dict[str, int] + label: str + unit: str + text: str + + +def parse_checkpoint_asg_smo_counters(string_table: StringTable) -> Dict[str, CheckpointAsgSmoCounters]: items = {} for entry in string_table: asgThroughput, asgConnectionRate, asgPacketRate, asgConcurrConn, asgClearConn, asgAccelConnectionRate, \ @@ -71,120 +77,103 @@ def parse_checkpoint_asg_smo_counters(string_table: StringTable) -> Dict[str, Di asgAccelLoadMin, asgAccelLoadMax, asgInstancesLoadAvg, asgInstancesLoadMin, asgInstancesLoadMax, \ asgVpnThroughput, asgVpnConn, asgNatConnRate, asgNatConn, asgVsxCpu1MinAvg = entry - items['Concurrent connections'] = { - 'asgConcurrConn': int(asgConcurrConn), - 'asgAccelConcurrConn': int(asgAccelConcurrConn), - 'asgNonAccelConcurrConn': int(asgNonAccelConcurrConn), - } - items['Connection rate'] = { - 'asgConnectionRate': int(asgConnectionRate), - 'asgAccelConnectionRate': int(asgAccelConnectionRate), - 'asgNonAccelConnectionRate': int(asgNonAccelConnectionRate), - } - - items['Load'] = { - 'asgLoad': int(asgLoad), - 'asgAccelLoadAvg': int(asgAccelLoadAvg), - 'asgAccelLoadMin': int(asgAccelLoadMin), - 'asgAccelLoadMax': int(asgAccelLoadMax), - } - - items['Instances load'] = { - 'asgInstancesLoadAvg': int(asgInstancesLoadAvg), - 'asgInstancesLoadMin': int(asgInstancesLoadMin), - 'asgInstancesLoadMax': int(asgInstancesLoadMax), - } - items['NAT'] = { - 'asgNatConnRate': int(asgNatConnRate), - 'asgNatConn': int(asgNatConn), - } - items['VPN'] = { - 'asgVpnThroughput': int(asgVpnThroughput), - 'asgVpnConn': int(asgVpnConn), - } - items['Throughput'] = { - 'asgThroughput': int(asgThroughput), - } - items['Packet rate'] = { - 'asgPacketRate': int(asgPacketRate), - } - return items - - -def discovery_checkpoint_asg_smo_counters(section:Dict[str, Dict[str, int]]) -> DiscoveryResult: - # sample parsed - # { - # 'Load': {'asgAccelLoadAvg': 0, 'asgAccelLoadMin': 0, 'asgLoad': 1, 'asgAccelLoadMax': 0}, - # 'Connection rate': {'asgConnectionRate': 0, 'asgNonAccelConnectionRate': 0, 'asgAccelConnectionRate': 0}, - # 'Instances load': {'asgInstancesLoadMin': 0, 'asgInstancesLoadMax': 7, 'asgInstancesLoadAvg': 1}, - # 'Throughput': {'asgThroughput': 111802}, - # 'Concurrent connections': {'asgAccelConcurrConn': 9, 'asgNonAccelConcurrConn': 79, 'asgConcurrConn': 91}, - # 'NAT': {'asgNatConn': 0, 'asgNatConnRate': 0}, - # 'VPN': {'asgVpnConn': 0, 'asgVpnThroughput': 0}, - # 'Packet rate': {'asgPacketRate': 84}} - # + items['Concurrent connections'] = CheckpointAsgSmoCounters( + counters={ + 'concurr_conn': int(asgConcurrConn), + 'accel_concurr_conn': int(asgAccelConcurrConn), + 'non_accel_concurr_conn': int(asgNonAccelConcurrConn), + }, + label='all/accelerated/non accelerated', + unit='connections', + text=f'{int(asgConcurrConn):d}/{int(asgAccelConcurrConn):d}/{int(asgNonAccelConcurrConn):d}', + ) + items['Connection rate'] = CheckpointAsgSmoCounters( + counters={ + 'connection_rate': int(asgConnectionRate), + 'accel_connection_rate': int(asgAccelConnectionRate), + 'non_accel_connection_rate': int(asgNonAccelConnectionRate), + }, + label='current/average/min/max', + unit='connections/s', + text=f'{int(asgLoad):d}/{int(asgAccelLoadAvg):d}/{int(asgAccelLoadMin):d}/{int(asgAccelLoadMax):d}', + ) + items['Load'] = CheckpointAsgSmoCounters( + counters={ + 'load': int(asgLoad), + 'accel_load_avg': int(asgAccelLoadAvg), + 'accel_load_min': int(asgAccelLoadMin), + 'accel_load_max': int(asgAccelLoadMax), + }, + label='current/average/min/max', + unit='%', + text=f'{int(asgLoad):d}/{int(asgAccelLoadAvg):d}/{int(asgAccelLoadMin):d}/{int(asgAccelLoadMax):d}', + ) + items['Instances load'] = CheckpointAsgSmoCounters( + counters={ + 'instances_load_avg': int(asgInstancesLoadAvg), + 'instances_load_min': int(asgInstancesLoadMin), + 'instances_load_max': int(asgInstancesLoadMax), + }, + label='average/min/max', + unit='%', + text=f'{int(asgInstancesLoadAvg):d}/{int(asgInstancesLoadMin):d}/{int(asgInstancesLoadMax):d}', + ) + items['NAT'] = CheckpointAsgSmoCounters( + counters={ + 'nat_conn_rate': int(asgNatConnRate), + 'nat_conn': int(asgNatConn), + }, + label='NAT Connections/NAT connection rate', + unit='connections', + text=f'{int(asgNatConn):d}/{int(asgNatConn):d}', + ) + items['VPN'] = CheckpointAsgSmoCounters( + counters={ + 'vpn_throughput': int(asgVpnThroughput), + 'vpn_conn': int(asgVpnConn), + }, + label='VPN Connections/VPN Throughput', + unit='', + text=f'{int(asgVpnConn):d}/{int(asgVpnThroughput):d}', + ) + items['Throughput'] = CheckpointAsgSmoCounters( + counters={ + 'throughput': int(asgThroughput), + }, + label='Throughput', + unit='Bytes/s', + text=f'{int(asgThroughput):d}' + ) + items['Packet rate'] = CheckpointAsgSmoCounters( + counters={ + 'packet_rate': int(asgPacketRate), + }, + label='Packet Rate', + unit='Packets/s', + text=f'{int(asgPacketRate):d}', + ) + if items: + return items + +def discovery_checkpoint_asg_smo_counters(section:Dict[str, CheckpointAsgSmoCounters]) -> DiscoveryResult: for item in section.keys(): yield Service(item=item) -def check_checkpoint_asg_smo_counters(item, params, section:Dict[str, Dict[str, int]]) -> CheckResult: +def check_checkpoint_asg_smo_counters(item, params, section: Dict[str, CheckpointAsgSmoCounters]) -> CheckResult: try: entry = section[item] except KeyError: yield Result(state=State.UNKNOWN, notice='Item not found in SNMP data') return - for key in entry.keys(): - yield Metric(value=entry[key], name=f'checkpoint_asg_mso_counters_{key}') + for key in entry.counters.keys(): + yield Metric(value=entry.counters[key], name=f'checkpoint_asg_smo_counters_{key}') - if item.lower() == 'concurrent connections': - yield Result( - state=State.OK, - summary=f'all/accelerated/non accelerated: {entry["asgConcurrConn"]:d}/{entry["asgAccelConcurrConn"]:d}/{entry["asgNonAccelConcurrConn"]:d}' - ) - - elif item.lower() == 'load': - yield Result( - state=State.OK, - summary=f'current/average/min/max: {entry["asgLoad"]:d}/{entry["asgAccelLoadAvg"]:d}/{entry["asgAccelLoadMin"]:d}/{entry["asgAccelLoadMax"]:d}' - ) + yield Result(state=State.OK, summary=f'{entry.label}: {entry.text}') - elif item.lower() == 'connection rate': - yield Result( - state=State.OK, - summary=f'all/accelerated/non accelerated: {entry["asgConnectionRate"]:d}/{entry["asgAccelConnectionRate"]:d}/{entry["asgNonAccelConnectionRate"]:d}' - ) - elif item.lower() == 'instances load': - yield Result( - state=State.OK, - summary=f'average/min/max: {entry["asgInstancesLoadAvg"]:d}/{entry["asgInstancesLoadMin"]:d}/{entry["asgInstancesLoadMax"]:d}' - ) - - elif item.lower() == 'throughput': - yield Result( - state=State.OK, - summary=f'Throughput: {entry["asgThroughput"]:d}' - ) - - elif item.lower() == 'packet rate': - yield Result( - state=State.OK, - summary=f'Packet Rate: {entry["asgPacketRate"]:d}' - ) - - elif item.lower() == 'nat': - yield Result( - state=State.OK, - summary=f'NAT Connections/NAT connection rate: {entry["asgNatConn"]:d}/{entry["asgNatConn"]:d}' - ) - - elif item.lower() == 'vpn': - yield Result( - state=State.OK, - summary=f'VPN Connections/VPN Throughput: {entry["asgVpnConn"]:d}/{entry["asgVpnThroughput"]:d}' - ) register.snmp_section( diff --git a/checkpoint_asg_smo_counters.mkp b/checkpoint_asg_smo_counters.mkp index 12a3e8c8a121b008617504a9f0b1343b8d0323d2..4dd5a4a8ae1485f815bd9b8637e39ed3171fea9d 100644 GIT binary patch delta 3338 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 Ulg<ew3}>MK0@8^mD*$)^05<xH%>V!Z delta 2514 zcmV;@2`%=m8vYXpABzYG88JJN2PS_oE_N_3GA?avZ~*OE|4-vO66fds6~3-cfm2D7 zw6vvCPvY43xE0Vv3%mD2UsYvO7jmRYE^)db#Q%QdFG=h)N$C@}Pw$kGXlwg3<C(E% z#!hhkRdDb>CIe{D@3U{9;<qvE^$yIwX$}TGqu(<R4AU^J{sA%$egY*iu_J#_<vom) zjr)_(i)JU}A&9gw((WGgD;*t@2k+QfKhA724-(=9!Q*Thkhv4AkF-t;X-gbCksA^> z@F~}I;JYM<(D?&)9??zU`UG9uI3`hmZm&P15J#&ZTHC&ZkrO07!BPC1&m{#vd@rz< zizM=>s0TvAakncJ&>w=31bTlE-FF#!<$5><7^r-YeX{s&$9M_tndZ=`Lpt-qj_()o zI#{GL>EW|Bf2Hicy~cEs8Zev2Pu7ccDwB2)mw1eG9}AhN4g3&ZvJA^KPEAAK7`i17 z>TB0uMEF068!>A%OE+{wL4>yR2qrI6Il3{_&AtLjV*9&?7cjR=Jvo03eEj;R^>-ou z^?%2K|3}8ZWftP!G=^pq|34-E+dTf;W7OUq|LqQHOW{wMeqZ=AK~nTnNtMx0!7L&H z1^VW}5A9jIKKR=Z{HRT1pH5MOrIWBor?`ELp^PF7DXS9b(wGwG3`pZ#2Bcx0O5tHH zBjhLtl%IGWH7-q9&}DzV?z#SwH+32aKR^DhKK-r6zhxP{CjNg0)kn`euK$3!#vJyC z{QKl2U4Nt3ABgq0hL%Owe_)wEHUA@Y@I7(8WeslE_@9(M{H2@3QTMy+cd@@g;WHEi zzt{SJj{kNHDQ@Zd_hXch)$xe-v_8PdmFr+X#$$9b{faKIk0XEELpRBH&vnu<w6PfU zjMbJgsxB!2`ugPxAv8ub|Howo05BhIf++^_qH%1R$Hpm>zpMD%UR<Mdv7H$M&8xtC zY#L(};UAGp2=>v6inzW+kdi41aIw7(J&a<19saPrM+9BEsrU2&eD>kb8dwJXInvp; zfhOqo?#rj?1>}Ej(=<nh)vjf+R2HKi-BZz{em%Ue!cWb5_=yUicF*eZgS~Vg?u8x| zRIf*$s_5YkI22`dp?1K{y;L{%TT`>QAH2Vx?kD?6FRbZs2YkOpHAnlwPxpdb#(r?K zY`f<nPcKB!n#~f82eQ^diDt0RQJ;OCn(PZWr7`|_%07RG{L9=LHn#eQ6&NF%Vm=4; z+;td41QB<QTdOEoqoqx3$Ft)Y$4CrjT^vE4LrC7~;FTMb4*KXi@HvIk@bWGJYdh#O zJILE!i!;%@OAmv3=q2~AAM5h@Q2M>FLs#FJsr17ZWN=8R_b>~NI;?ezqYYF8-uQy! z#3TIoH70+N>j)5m#4dhLuW#-mELyhbErJ#QO)E5sf4Jm9jQP*m7#yf=FXq45S!Utk z4NiL^>@TT4N59KD9bAYPOT3CzJ3qRy6Tq4LS+<ImAi3iftn}~i=!u;w&}xAo6xvaY z7d3~j!<exx2<02gLXOb!-`N7r0Me0uftdMx%;tY|30}vryI)>elh!pbDtZPCQUtSM z=F9m0?jZ`2`-d=rtpUyR!1u93cf}XFHni&oZYG#yO+YwF6j2~=d)UrfXO4rtqLAO@ z38#Ty3X+%=`4V2~zk<tS&P7{ioBP6C+0eD?tJrJ%iFJJPVSmAeF3toLJ5yG*ld>yQ zeG7m6f-9jXH^L_LcV?+*b6os%9wsKt1M|c3u{CRDve~N6G+{mr!oe){T&&IMdS_Tl znz}~Xm~N3nwezU6#ZvTf&Q}~MVJ=ytoWEpH67gDMsIU%2;I3*5rQM?#DfQRbS;}29 zSZ{5ql=5-K=AzMbPgPjThBDc-Rb`df!UcbGL~k7vY`qdD=&fb4pURl*r&>d^C_-Mf z$;F_|=P8bqC|C^M3g&X_ia}n*T(GiW<n-*W!ZIljNc$!4EZc2-bPHamz_*)eg#t>N z%4I6uB}#}~rZDVMLYk*smoi04wb&BPOHy5a$ct7kJMY_)9buA0J{K>F^)jvV^#y;M z2l%+MG>gKmoEdll&JLaISg;g*FX9_%BJf{I;@jwy1+eH9d}gOCUX9mIHbF7din+GZ znvh$W_GE3g2c-!M!7t`330NVqBpQdEstjRD6Dd3EWoxhTqrK{hvf?T`UoCB?otnBg z6r%+eSwWg1g!DYVQ$H&?LiQgGYr%h&2c+OC2DZ#6hl}7>;$zf*<zeulm7N@ED6oSg zcZU9mpX0-${OI`XVsDuq^A9O{LO;@@E<cUeMGi%G=-#*2aR<FEj-+EY*91;Vxk~)7 zJ4t2D=nQjyPk3^0NYEvI{w0cnsAvV32#0TQ$An!<^sm#)>F0k<JID_R7&w2?K2d)_ z1DuoiOX?YVWntGY?I@GS^GNPR@EV0O%_>~TFGPnM+e`3-0cQZ5!_06|o2-g&EZ1@F z!^I0AUtxNF{9my})4kvajt-B|WP&uOVq=#(K*^%AH$GpgB_U4MYdd-d?ck=?wP^@o zy1SNLACigGhTX<ZYOC?ko{xW*uU%=Z7)D!wl2Bt9EmKUm0efYR;0fp5%oa}V+K|-Y z>eyYoes^s@Ddy7DRBoq8TGfM)1#1TFr+qAUidp`TT6?K3R4#uVro8^_;|jM>f8Ng% zHQS(As<!MZ*1sKq{Z^kyHR0XN%?piUY2Lk$hM`=X-c3bO^5_mxbj*M2-ab0|_ItVy zia*LXaonZtLX;{xivz)SKuG;>G-MO{?`Q~|M-)S7yJByM^U9VD%CTkJl2-auQKv6s z7NW9qU0HqH^$$Hj{Hfb2@fq)A=R-KowZg=Cn52&-bMMecgcGgu3A5IrN3QdK{&IeK z^ZC>C?)duCKgMGk#5aGN{!RW51lfD3RBqrd<H=0D$CzB25?U(4$`EQ+R8hSQm2ZC) z(U;|<^;LzO<dF1<p9&acfRZ$=LWdc&JgKYb(U#zH4NuFYmP1V=!_uT$7&O%hMdB`i ztZfh^?*gb-0<xb9pxpVzT2TO=lmoY?9aI3frp^~a3B&?wB%^;yoGCdzzq=GRs!_xg z#&e%5&qFg5Kgf%V`w|n_EEE1JAdk)bRl#8%p%(nnPpZIn+-lOJ0RGlNO@#an!<)p7 zjG+Zh04P#RrATRmHkq*7Z&UOuy<FJrpDQI1{C;sn-y>xCkYBL)tBn2fVa)Gr3ywd# zy<jiPQxN)Vipwn@fMmJzP0vK+*D)FA&ikOu6(t^yF<HFTBF+WZP8$l@f?X*w9iF_r c(w8p>k_{k}3=Ikm^nXeJ1)Y$4A^=bT0P=b3KmY&$ diff --git a/packages/checkpoint_asg_smo_counters b/packages/checkpoint_asg_smo_counters index aa77ead..9d0e3be 100644 --- a/packages/checkpoint_asg_smo_counters +++ b/packages/checkpoint_asg_smo_counters @@ -1,11 +1,12 @@ {'author': 'Th.L. (thl-cmk[at]outlook[dot]com)', 'description': 'Monitor Check Point Maestro SMO performance counters\n', 'download_url': 'http://thl-cmk.hopto.org/', - 'files': {'agent_based': ['checkpoint_asg_smo_counters.py']}, + 'files': {'agent_based': ['checkpoint_asg_smo_counters.py'], + 'web': ['plugins/metrics/checkpoint_asg_smo_counters.py']}, 'name': 'checkpoint_asg_smo_counters', - 'num_files': 1, + 'num_files': 2, 'title': 'Check Point Maestro SMO performance counters', - 'version': '20210910.v0.2', + 'version': '20210911.v0.2a', 'version.min_required': '2.0.0', 'version.packaged': '2021.07.14', 'version.usable_until': None} \ No newline at end of file diff --git a/web/plugins/metrics/checkpoint_asg_smo_counters.py b/web/plugins/metrics/checkpoint_asg_smo_counters.py new file mode 100644 index 0000000..c59c14d --- /dev/null +++ b/web/plugins/metrics/checkpoint_asg_smo_counters.py @@ -0,0 +1,288 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# + +from cmk.gui.i18n import _ + +from cmk.gui.plugins.metrics import ( + metric_info, + graph_info, + perfometer_info, +) + +metric_info['checkpoint_asg_smo_counters_concurr_conn'] = { + 'title': _('Connections'), + 'unit': 'count', + 'color': '26/a', +} +metric_info['checkpoint_asg_smo_counters_accel_concurr_conn'] = { + 'title': _('Connections Accelerated'), + 'unit': 'count', + 'color': '32/a', +} +metric_info['checkpoint_asg_smo_counters_non_accel_concurr_conn'] = { + 'title': _('Connections non Accelerated'), + 'unit': 'count', + 'color': '16/a', +} + +metric_info['checkpoint_asg_smo_counters_connection_rate'] = { + 'title': _('Connection Rate'), + 'unit': '1/s', + 'color': '26/a', +} +metric_info['checkpoint_asg_smo_counters_accel_connection_rate'] = { + 'title': _('Connection Rate Accelerated'), + 'unit': '1/s', + 'color': '32/a', +} +metric_info['checkpoint_asg_smo_counters_non_accel_connection_rate'] = { + 'title': _('Connection Rate non Accelerated'), + 'unit': '1/s', + 'color': '16/a', +} + +metric_info['checkpoint_asg_smo_counters_load'] = { + 'title': _('Load'), + 'unit': '%', + 'color': '26/a', +} +metric_info['checkpoint_asg_smo_counters_accel_load_max'] = { + 'title': _('Accel load (max)'), + 'unit': '%', + 'color': '31/a', +} +metric_info['checkpoint_asg_smo_counters_accel_load_avg'] = { + 'title': _('Accel load (avg)'), + 'unit': '%', + 'color': '16/a', +} +metric_info['checkpoint_asg_smo_counters_accel_load_min'] = { + 'title': _('Accel load (min)'), + 'unit': '%', + 'color': '11/a', +} + +metric_info['checkpoint_asg_smo_counters_instances_load_avg'] = { + 'title': _('Instances load (avg)'), + 'unit': '%', + 'color': '26/a', +} +metric_info['checkpoint_asg_smo_counters_instances_load_min'] = { + 'title': _('Instances load (min)'), + 'unit': '%', + 'color': '32/a', +} +metric_info['checkpoint_asg_smo_counters_instances_load_max'] = { + 'title': _('Instances load (max)'), + 'unit': '%', + 'color': '16/a', +} + +metric_info['checkpoint_asg_smo_counters_nat_conn'] = { + 'title': _('NAT connections'), + 'unit': 'count', + 'color': '26/a', +} +metric_info['checkpoint_asg_smo_counters_nat_conn_rate'] = { + 'title': _('NAT Conn Rate'), + 'unit': '1/s', + 'color': '32/a', +} + +metric_info['checkpoint_asg_smo_counters_vpn_conn'] = { + 'title': _('VPN connections'), + 'unit': 'count', + 'color': '26/a', +} +metric_info['checkpoint_asg_smo_counters_vpn_throughput'] = { + 'title': _('VPN Throughput'), + 'unit': 'bytes/s', + 'color': '32/a', +} + +metric_info['checkpoint_asg_smo_counters_throughput'] = { + 'title': _('Throughput'), + 'unit': 'bytes/s', + 'color': '26/a', +} + +metric_info['checkpoint_asg_smo_counters_packet_rate'] = { + 'title': _('Packet Rate'), + 'unit': '1/s', + 'color': '26/a', +} + +graph_info['checkpoint_asg_smo_counters_connections'] = { + 'title': _('Check Point SMO Concurrent Connections'), + 'metrics': [ + ('checkpoint_asg_smo_counters_non_accel_concurr_conn', 'line'), + ('checkpoint_asg_smo_counters_accel_concurr_conn', 'line'), + ('checkpoint_asg_smo_counters_concurr_conn', 'area'), + ], + 'range': (0, 'checkpoint_asg_smo_counters_concurr_conn:max'), +} + +graph_info['checkpoint_asg_smo_counters_connection_rate'] = { + 'title': _('Check Point SMO Counter Connection Rate'), + 'metrics': [ + ('checkpoint_asg_smo_counters_non_accel_connection_rate', 'line'), + ('checkpoint_asg_smo_counters_accel_connection_rate', 'line'), + ('checkpoint_asg_smo_counters_connection_rate', 'area'), + ], + 'range': (0, 'checkpoint_asg_smo_counters_connection_rate:max'), +} + +graph_info['checkpoint_asg_smo_counters_accel_load'] = { + 'title': _('Check Point SMO Counter Load'), + 'metrics': [ + ('checkpoint_asg_smo_counters_accel_load_min', 'line'), + ('checkpoint_asg_smo_counters_accel_load_avg', 'line'), + ('checkpoint_asg_smo_counters_accel_load_max', 'line'), + ('checkpoint_asg_smo_counters_load', 'area'), + ], + 'range': (0, 110), +} + +graph_info['checkpoint_asg_smo_counters_instances_load'] = { + 'title': _('Check Point SMO Counter Instances Load'), + 'metrics': [ + ('checkpoint_asg_smo_counters_instances_load_min', 'line'), + ('checkpoint_asg_smo_counters_instances_load_avg', 'area'), + ('checkpoint_asg_smo_counters_instances_load_max', 'line'), + ], + 'range': (0, 110), +} + +graph_info['checkpoint_asg_smo_counters_nat_conn'] = { + 'title': _('Check Point SMO Counter NAT connections'), + 'metrics': [ + ('checkpoint_asg_smo_counters_nat_conn', 'area'), + ], + 'range': (0, 'checkpoint_asg_smo_counters_nat_conn:max'), +} +graph_info['checkpoint_asg_smo_counters_nat_conn_rate'] = { + 'title': _('Check Point SMO Counter NAT connection rate'), + 'metrics': [ + ('checkpoint_asg_smo_counters_nat_conn_rate', 'area'), + ], + 'range': (0, 'checkpoint_asg_smo_counters_nat_conn_rate:max'), +} + +graph_info['checkpoint_asg_smo_counters_vpn_conn'] = { + 'title': _('Check Point SMO Counter VPN connections'), + 'metrics': [ + ('checkpoint_asg_smo_counters_vpn_conn', 'area'), + ], + 'range': (0, 'checkpoint_asg_smo_counters_vpn_conn:max'), +} +graph_info['checkpoint_asg_smo_counters_vpn_throughput'] = { + 'title': _('Check Point SGM Counter VPN Throughput'), + 'metrics': [ + ('checkpoint_asg_smo_counters_vpn_throughput', 'area'), + ], + 'range': (0, 'checkpoint_asg_smo_counters_vpn_throughput:max'), +} + +graph_info['checkpoint_asg_smo_counters_throughput'] = { + 'title': _('Check Point SGM Counter Throughput'), + 'metrics': [ + ('checkpoint_asg_smo_counters_throughput', 'area'), + ], + 'range': (0, 'checkpoint_asg_smo_counters_throughput:max'), +} + +graph_info['checkpoint_asg_smo_counters_packet_rate'] = { + 'title': _('Check Point SMO Counter Packet Rate'), + 'metrics': [ + ('checkpoint_asg_smo_counters_packet_rate', 'area'), + ], + 'range': (0, 'checkpoint_asg_smo_counters_packet_rate:max'), +} + + +perfometer_info.append(('stacked', [ + { + 'type': 'logarithmic', + 'metric': 'checkpoint_asg_smo_counters_accel_concurr_conn', + 'half_value': 100000.0, + 'exponent': 2, + }, + { + 'type': 'logarithmic', + 'metric': 'checkpoint_asg_smo_counters_non_accel_concurr_conn', + 'half_value': 100000.0, + 'exponent': 2, + }, +])) + +perfometer_info.append(('stacked', [ + { + 'type': 'logarithmic', + 'metric': 'checkpoint_asg_smo_counters_accel_connection_rate', + 'half_value': 10000.0, + 'exponent': 2, + }, + { + 'type': 'logarithmic', + 'metric': 'checkpoint_asg_smo_counters_non_accel_connection_rate', + 'half_value': 10000.0, + 'exponent': 2, + }, +])) + +perfometer_info.append({ + 'type': 'linear', + 'segments': ['checkpoint_asg_smo_counters_accel_load_avg'], + 'total': 100, +}) + +perfometer_info.append({ + 'type': 'linear', + 'segments': ['checkpoint_asg_smo_counters_instances_load_avg'], + 'total': 100, +}) + +perfometer_info.append(('stacked', [ + { + 'type': 'logarithmic', + 'metric': 'checkpoint_asg_smo_counters_nat_conn', + 'half_value': 10000.0, + 'exponent': 2, + }, + { + 'type': 'logarithmic', + 'metric': 'checkpoint_asg_smo_counters_nat_conn_rate', + 'half_value': 500.0, + 'exponent': 2, + }, +])) + +perfometer_info.append(('stacked', [ + { + 'type': 'logarithmic', + 'metric': 'checkpoint_asg_smo_counters_vpn_conn', + 'half_value': 500.0, + 'exponent': 2, + }, + { + 'type': 'logarithmic', + 'metric': 'checkpoint_asg_smo_counters_vpn_throughput', + 'half_value': 2592000.0, + 'exponent': 2, + }, +])) + +perfometer_info.append({ + 'type': 'logarithmic', + 'metric': 'checkpoint_asg_smo_counters_throughput', + 'half_value': 500.0, + 'exponent': 2, +}) + +perfometer_info.append({ + 'type': 'logarithmic', + 'metric': 'checkpoint_asg_smo_counters_packet_rate', + 'half_value': 100000.0, + 'exponent': 2, +}) -- GitLab